From b1b2e84271c3920c7d803661a339091ec0f54161 Mon Sep 17 00:00:00 2001 From: fkantelberg Date: Fri, 13 Jun 2025 10:26:42 +0200 Subject: [PATCH] Respect the countries key from the manifest for auto installing modules in Odoo 17.0+ --- src/doblib/__init__.py | 2 +- src/doblib/module.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/doblib/__init__.py b/src/doblib/__init__.py index 3bc471b..be65917 100644 --- a/src/doblib/__init__.py +++ b/src/doblib/__init__.py @@ -1 +1 @@ -VERSION = "0.19.4" +VERSION = "0.19.5" diff --git a/src/doblib/module.py b/src/doblib/module.py index 5acc2ba..74a79a3 100644 --- a/src/doblib/module.py +++ b/src/doblib/module.py @@ -115,6 +115,8 @@ def check_auto_install(self, db_name): states = frozenset(("installed", "to install", "to upgrade")) with self.env(db_name, False) as env: + countries = env["res.company"].search([]).mapped("country_id") + domain = [("state", "=", "uninstalled"), ("auto_install", "=", True)] modules = env["ir.module.module"].search(domain) auto_install = {module: module.dependencies_id for module in modules} @@ -124,6 +126,13 @@ def check_auto_install(self, db_name): while new_module: new_module = False for module, dependencies in auto_install.items(): + if ( + "country_ids" in module._fields + and module.country_ids + and not (module.country_ids & countries) + ): + continue + if all( dep.state in states or dep.depend_id in to_install for dep in dependencies