From 3d0e856de03338b79367b25a0035e7e3f67fb837 Mon Sep 17 00:00:00 2001 From: Kristof Bernaert Date: Sun, 14 Jun 2026 13:31:26 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20add=20dlv=5Ffleetflow=5Fbase=20?= =?UTF-8?q?=E2=80=94=20FleetFlow=20Settings=20foundation=20addon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dlv_fleetflow_base/CHANGELOG.md | 14 ++++ dlv_fleetflow_base/README.md | 64 +++++++++++++++++++ dlv_fleetflow_base/__init__.py | 1 + dlv_fleetflow_base/__manifest__.py | 18 ++++++ dlv_fleetflow_base/views/menus.xml | 18 ++++++ .../views/res_config_settings_views.xml | 19 ++++++ 6 files changed, 134 insertions(+) create mode 100644 dlv_fleetflow_base/CHANGELOG.md create mode 100644 dlv_fleetflow_base/README.md create mode 100644 dlv_fleetflow_base/__init__.py create mode 100644 dlv_fleetflow_base/__manifest__.py create mode 100644 dlv_fleetflow_base/views/menus.xml create mode 100644 dlv_fleetflow_base/views/res_config_settings_views.xml diff --git a/dlv_fleetflow_base/CHANGELOG.md b/dlv_fleetflow_base/CHANGELOG.md new file mode 100644 index 0000000..89f6cf3 --- /dev/null +++ b/dlv_fleetflow_base/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.0.0] - 2026-06-14 + +### Added +- Initial release. +- FleetFlow entry in the Odoo Settings sidebar (Settings → FleetFlow). +- Empty notebook foundation for feature addon tabs. +- Owned by `dlv_fleetflow_base`, never uninstalled directly. diff --git a/dlv_fleetflow_base/README.md b/dlv_fleetflow_base/README.md new file mode 100644 index 0000000..d33bae4 --- /dev/null +++ b/dlv_fleetflow_base/README.md @@ -0,0 +1,64 @@ +# dlv_fleetflow_base + +## Overview + +`dlv_fleetflow_base` is the foundation addon for all FleetFlow-branded addons. +It permanently owns the **FleetFlow** entry in the Odoo Settings sidebar +(Settings → FleetFlow) and provides an empty settings block that feature addons +extend. It contains no models and no business logic — its only job is to give +every `dlv_fleetflow_*` addon a single, shared place to live in Settings. + +## How it works + +This addon inherits the standard configuration form +(`base_setup.res_config_settings_view_form`) and injects a FleetFlow +`app_settings_block` carrying `data-key="dlv_fleetflow_base"` and an empty +``. It also creates the **FleetFlow** menu entry and the action that +opens Settings directly on that block. + +Feature addons (`dlv_fleetflow_*`) never create their own Settings entry. +Instead, each one adds a tab by inheriting the same base configuration form and +targeting the shared notebook with an xpath: + +``` +//div[@data-key='dlv_fleetflow_base']//notebook +``` + +Because every feature addon depends on `dlv_fleetflow_base`, its view is loaded +first, so the notebook exists when the feature addon's xpath runs. The result is +one FleetFlow settings page with one tab per installed feature addon. + +## Adding a new FleetFlow addon + +1. Add `dlv_fleetflow_base` to your addon's `depends`. +2. Inherit the base configuration form and add a `` to the shared + notebook: + +```xml + + res.config.settings.view.form.inherit.my.addon + res.config.settings + + + + + + + + + +``` + +3. That's it — your tab appears under Settings → FleetFlow alongside the others. + +## Dependencies + +- `base` +- `base_setup` + +## Installation + +Install `dlv_fleetflow_base` **first**, before any other `dlv_fleetflow_*` +addon. It is a permanent dependency: do **not** uninstall it while any FleetFlow +feature addon is still active, or those addons will lose their Settings tab and +fail to load their configuration views. diff --git a/dlv_fleetflow_base/__init__.py b/dlv_fleetflow_base/__init__.py new file mode 100644 index 0000000..40a96af --- /dev/null +++ b/dlv_fleetflow_base/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/dlv_fleetflow_base/__manifest__.py b/dlv_fleetflow_base/__manifest__.py new file mode 100644 index 0000000..fd6596d --- /dev/null +++ b/dlv_fleetflow_base/__manifest__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +{ + "name": "FleetFlow Base", + "summary": "Foundation for all FleetFlow addons — owns the Settings menu entry", + "author": "bv Domus La Vila", + "website": "https://domuslavila.eu", + "category": "Technical", + "version": "16.0.1.0.0", + "license": "LGPL-3", + "depends": ["base", "base_setup"], + "data": [ + "views/res_config_settings_views.xml", + "views/menus.xml", + ], + "installable": True, + "application": False, + "auto_install": False, +} diff --git a/dlv_fleetflow_base/views/menus.xml b/dlv_fleetflow_base/views/menus.xml new file mode 100644 index 0000000..27069b7 --- /dev/null +++ b/dlv_fleetflow_base/views/menus.xml @@ -0,0 +1,18 @@ + + + + + FleetFlow + res.config.settings + form + inline + {'module': 'dlv_fleetflow_base'} + + + + + diff --git a/dlv_fleetflow_base/views/res_config_settings_views.xml b/dlv_fleetflow_base/views/res_config_settings_views.xml new file mode 100644 index 0000000..c40be33 --- /dev/null +++ b/dlv_fleetflow_base/views/res_config_settings_views.xml @@ -0,0 +1,19 @@ + + + + + res.config.settings.view.form.inherit.fleetflow + res.config.settings + + + +
+

FleetFlow

+ +
+
+
+
+ +