From 339312667449d730d841b2cbb42dd2ef7abbecca Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Tue, 25 May 2021 12:02:01 +0200 Subject: [PATCH 01/36] [ADD] new module module_change_auto_install to configure auto installable modules by configuration --- module_change_auto_install/README.rst | 8 ++++ module_change_auto_install/__init__.py | 1 + module_change_auto_install/__manifest__.py | 17 ++++++++ module_change_auto_install/patch.py | 40 +++++++++++++++++++ .../readme/CONFIGURE.rst | 33 +++++++++++++++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 15 +++++++ module_change_auto_install/readme/DEVELOP.rst | 4 ++ module_change_auto_install/readme/INSTALL.rst | 4 ++ 9 files changed, 123 insertions(+) create mode 100644 module_change_auto_install/README.rst create mode 100644 module_change_auto_install/__init__.py create mode 100644 module_change_auto_install/__manifest__.py create mode 100644 module_change_auto_install/patch.py create mode 100644 module_change_auto_install/readme/CONFIGURE.rst create mode 100644 module_change_auto_install/readme/CONTRIBUTORS.rst create mode 100644 module_change_auto_install/readme/DESCRIPTION.rst create mode 100644 module_change_auto_install/readme/DEVELOP.rst create mode 100644 module_change_auto_install/readme/INSTALL.rst diff --git a/module_change_auto_install/README.rst b/module_change_auto_install/README.rst new file mode 100644 index 00000000000..e650c809f18 --- /dev/null +++ b/module_change_auto_install/README.rst @@ -0,0 +1,8 @@ +=============================== +Change auto installable modules +=============================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/module_change_auto_install/__init__.py b/module_change_auto_install/__init__.py new file mode 100644 index 00000000000..2e653d695c9 --- /dev/null +++ b/module_change_auto_install/__init__.py @@ -0,0 +1 @@ +from .patch import post_load diff --git a/module_change_auto_install/__manifest__.py b/module_change_auto_install/__manifest__.py new file mode 100644 index 00000000000..6a6220a2a16 --- /dev/null +++ b/module_change_auto_install/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright (C) 2021 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Change auto installable modules", + "summary": "Customize auto installables modules by configuration", + "version": "14.0.1.0.1", + "category": "Tools", + "maintainers": ["legalsylvain"], + "author": "GRAP, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-tools", + "installable": True, + "depends": ["base"], + "post_load": "post_load", + "license": "AGPL-3", +} diff --git a/module_change_auto_install/patch.py b/module_change_auto_install/patch.py new file mode 100644 index 00000000000..9285ffddba8 --- /dev/null +++ b/module_change_auto_install/patch.py @@ -0,0 +1,40 @@ +# Copyright (C) 2021 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import logging + +from odoo import modules +from odoo.tools import config + +_logger = logging.getLogger(__name__) +_original_load_information_from_description_file = ( + modules.module.load_information_from_description_file +) + + +def _overload_load_information_from_description_file(module, mod_path=None): + res = _original_load_information_from_description_file(module, mod_path=None) + auto_install = res.get("auto_install", False) + + modules_auto_install_enabled = config.get("modules_auto_install_enabled", []) + modules_auto_install_disabled = config.get("modules_auto_install_disabled", []) + + if module in modules_auto_install_disabled and auto_install: + _logger.info("Module '%s' has been marked as not auto installable." % module) + res["auto_install"] = False + + if module in modules_auto_install_enabled and not auto_install: + _logger.info("Module '%s' has been marked as auto installable." % module) + res["auto_install"] = True + + return res + + +def post_load(): + modules.module.load_information_from_description_file = ( + _overload_load_information_from_description_file + ) + modules.load_information_from_description_file = ( + _overload_load_information_from_description_file + ) diff --git a/module_change_auto_install/readme/CONFIGURE.rst b/module_change_auto_install/readme/CONFIGURE.rst new file mode 100644 index 00000000000..e766d4315d3 --- /dev/null +++ b/module_change_auto_install/readme/CONFIGURE.rst @@ -0,0 +1,33 @@ +* Edit your ``odoo.cfg`` configuration file: + +* Add the module ``module_change_auto_install`` in the ``server_wide_modules`` list. + +* (optional) Add a new entry ``modules_auto_install_disabled`` to mark + a list of modules as NOT auto installable. + +* (optional) Add a new entry ``modules_auto_install_enabled`` to mark + a list of modules as auto installable. This feature can be usefull for companies + that are hosting a lot of Odoo instances for many customers, and want some modules + to be always installed. + +**Typical Settings** + +.. code-block:: shell + + server_wide_modules = web,module_change_auto_install + + modules_auto_install_disabled = partner_autocomplete,iap,mail_bot,account_edi,account_edi_facturx,account_edi_ubl + + modules_auto_install_enabled = web_responsive,web_no_bubble,base_technical_features,disable_odoo_online,account_menu + +Run your instance and check logs. Modules that has been altered should be present in your log, at the load of your instance: + +.. code-block:: shell + + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_facturx' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_ubl' has been marked as not auto installable. + INFO db_name odoo.modules.loading: 42 modules loaded in 0.32s, 0 queries (+0 extra) diff --git a/module_change_auto_install/readme/CONTRIBUTORS.rst b/module_change_auto_install/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..9f76a75bc18 --- /dev/null +++ b/module_change_auto_install/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Sylvain LE GAL diff --git a/module_change_auto_install/readme/DESCRIPTION.rst b/module_change_auto_install/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..dbd184a2fed --- /dev/null +++ b/module_change_auto_install/readme/DESCRIPTION.rst @@ -0,0 +1,15 @@ +In odoo, by default some modules are marked as auto installable +by the ``auto_install`` key present in the manifest. + +* This feature is very useful for "glue" modules that allow two modules to work together. + (A typical example is ``sale_stock`` which allows ``sale`` and ``stock`` modules to work together). + +* However, Odoo SA also marks some modules as auto installable, even though + this is not technically required. This can happen + for modules the company wants to promote like ``iap``, + modules with a big wow effect like ``partner_autocomplete``, + or some modules they consider useful by default like ``account_edi``. + See the discussion: https://github.com/odoo/odoo/issues/71190 + +This module allows to change by configuration, the list of auto installable modules, +adding or removing some modules to auto install. diff --git a/module_change_auto_install/readme/DEVELOP.rst b/module_change_auto_install/readme/DEVELOP.rst new file mode 100644 index 00000000000..a2ee648d603 --- /dev/null +++ b/module_change_auto_install/readme/DEVELOP.rst @@ -0,0 +1,4 @@ +If you upgrade your odoo Instance from a major version to another, +using the OCA Free Software project "OpenUpgrade", you can also use +this module during the upgrade process, to avoid the installation of +useless new modules. diff --git a/module_change_auto_install/readme/INSTALL.rst b/module_change_auto_install/readme/INSTALL.rst new file mode 100644 index 00000000000..c7804edadb8 --- /dev/null +++ b/module_change_auto_install/readme/INSTALL.rst @@ -0,0 +1,4 @@ +You don't have to install this module. To make the features working : + +* make the module ``module_change_auto_install`` available in your addons path +* update your ``odoo.cfg`` following the "Configure" section From 7a41943d60acc2a2f1b2d692beb2a2ca20beb0f0 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 25 May 2021 21:10:32 +0000 Subject: [PATCH 02/36] [UPD] Update module_change_auto_install.pot --- .../i18n/module_change_auto_install.pot | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 module_change_auto_install/i18n/module_change_auto_install.pot diff --git a/module_change_auto_install/i18n/module_change_auto_install.pot b/module_change_auto_install/i18n/module_change_auto_install.pot new file mode 100644 index 00000000000..4d8b20f912f --- /dev/null +++ b/module_change_auto_install/i18n/module_change_auto_install.pot @@ -0,0 +1,13 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" From 1814950483c88527f51bd1e9c22c07ef0f964ca1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 25 May 2021 21:14:55 +0000 Subject: [PATCH 03/36] [UPD] README.rst --- module_change_auto_install/README.rst | 140 +++++ .../static/description/index.html | 483 ++++++++++++++++++ 2 files changed, 623 insertions(+) create mode 100644 module_change_auto_install/static/description/index.html diff --git a/module_change_auto_install/README.rst b/module_change_auto_install/README.rst index e650c809f18..725a259e429 100644 --- a/module_change_auto_install/README.rst +++ b/module_change_auto_install/README.rst @@ -6,3 +6,143 @@ Change auto installable modules !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/14.0/module_change_auto_install + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-14-0/server-tools-14-0-module_change_auto_install + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/149/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +In odoo, by default some modules are marked as auto installable +by the ``auto_install`` key present in the manifest. + +* This feature is very useful for "glue" modules that allow two modules to work together. + (A typical example is ``sale_stock`` which allows ``sale`` and ``stock`` modules to work together). + +* However, Odoo SA also marks some modules as auto installable, even though + this is not technically required. This can happen + for modules the company wants to promote like ``iap``, + modules with a big wow effect like ``partner_autocomplete``, + or some modules they consider useful by default like ``account_edi``. + See the discussion: https://github.com/odoo/odoo/issues/71190 + +This module allows to change by configuration, the list of auto installable modules, +adding or removing some modules to auto install. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +You don't have to install this module. To make the features working : + +* make the module ``module_change_auto_install`` available in your addons path +* update your ``odoo.cfg`` following the "Configure" section + +Configuration +============= + +* Edit your ``odoo.cfg`` configuration file: + +* Add the module ``module_change_auto_install`` in the ``server_wide_modules`` list. + +* (optional) Add a new entry ``modules_auto_install_disabled`` to mark + a list of modules as NOT auto installable. + +* (optional) Add a new entry ``modules_auto_install_enabled`` to mark + a list of modules as auto installable. This feature can be usefull for companies + that are hosting a lot of Odoo instances for many customers, and want some modules + to be always installed. + +**Typical Settings** + +.. code-block:: shell + + server_wide_modules = web,module_change_auto_install + + modules_auto_install_disabled = partner_autocomplete,iap,mail_bot,account_edi,account_edi_facturx,account_edi_ubl + + modules_auto_install_enabled = web_responsive,web_no_bubble,base_technical_features,disable_odoo_online,account_menu + +Run your instance and check logs. Modules that has been altered should be present in your log, at the load of your instance: + +.. code-block:: shell + + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_facturx' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_ubl' has been marked as not auto installable. + INFO db_name odoo.modules.loading: 42 modules loaded in 0.32s, 0 queries (+0 extra) + +Development +=========== + +If you upgrade your odoo Instance from a major version to another, +using the OCA Free Software project "OpenUpgrade", you can also use +this module during the upgrade process, to avoid the installation of +useless new modules. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px + :target: https://github.com/legalsylvain + :alt: legalsylvain + +Current `maintainer `__: + +|maintainer-legalsylvain| + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/module_change_auto_install/static/description/index.html b/module_change_auto_install/static/description/index.html new file mode 100644 index 00000000000..462cf550bdb --- /dev/null +++ b/module_change_auto_install/static/description/index.html @@ -0,0 +1,483 @@ + + + + + + +Change auto installable modules + + + +
+

Change auto installable modules

+ + +

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

+

In odoo, by default some modules are marked as auto installable +by the auto_install key present in the manifest.

+
    +
  • This feature is very useful for “glue” modules that allow two modules to work together. +(A typical example is sale_stock which allows sale and stock modules to work together).
  • +
  • However, Odoo SA also marks some modules as auto installable, even though +this is not technically required. This can happen +for modules the company wants to promote like iap, +modules with a big wow effect like partner_autocomplete, +or some modules they consider useful by default like account_edi. +See the discussion: https://github.com/odoo/odoo/issues/71190
  • +
+

This module allows to change by configuration, the list of auto installable modules, +adding or removing some modules to auto install.

+

Table of contents

+ +
+

Installation

+

You don’t have to install this module. To make the features working :

+
    +
  • make the module module_change_auto_install available in your addons path
  • +
  • update your odoo.cfg following the “Configure” section
  • +
+
+
+

Configuration

+
    +
  • Edit your odoo.cfg configuration file:
  • +
  • Add the module module_change_auto_install in the server_wide_modules list.
  • +
  • (optional) Add a new entry modules_auto_install_disabled to mark +a list of modules as NOT auto installable.
  • +
  • (optional) Add a new entry modules_auto_install_enabled to mark +a list of modules as auto installable. This feature can be usefull for companies +that are hosting a lot of Odoo instances for many customers, and want some modules +to be always installed.
  • +
+

Typical Settings

+
+server_wide_modules = web,module_change_auto_install
+
+modules_auto_install_disabled = partner_autocomplete,iap,mail_bot,account_edi,account_edi_facturx,account_edi_ubl
+
+modules_auto_install_enabled = web_responsive,web_no_bubble,base_technical_features,disable_odoo_online,account_menu
+
+

Run your instance and check logs. Modules that has been altered should be present in your log, at the load of your instance:

+
+INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as not auto installable.
+INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as not auto installable.
+INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as not auto installable.
+INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi' has been marked as not auto installable.
+INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_facturx' has been marked as not auto installable.
+INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_ubl' has been marked as not auto installable.
+INFO db_name odoo.modules.loading: 42 modules loaded in 0.32s, 0 queries (+0 extra)
+
+
+
+

Development

+

If you upgrade your odoo Instance from a major version to another, +using the OCA Free Software project “OpenUpgrade”, you can also use +this module during the upgrade process, to avoid the installation of +useless new modules.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

legalsylvain

+

This module is part of the OCA/server-tools project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 45c9abb8001575d611304882389f19ea3c168159 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 25 May 2021 21:14:56 +0000 Subject: [PATCH 04/36] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 module_change_auto_install/static/description/icon.png diff --git a/module_change_auto_install/static/description/icon.png b/module_change_auto_install/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 969999b7e855e265a52928f301cf477b464629a2 Mon Sep 17 00:00:00 2001 From: "moylop260@vauxoo.com" Date: Wed, 26 May 2021 14:22:37 +0000 Subject: [PATCH 05/36] [FIX] module_change_auto_install: Split string sep by comma Optimize validation Add logger to apply patch --- module_change_auto_install/patch.py | 31 +++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/module_change_auto_install/patch.py b/module_change_auto_install/patch.py index 9285ffddba8..14dc00fa675 100644 --- a/module_change_auto_install/patch.py +++ b/module_change_auto_install/patch.py @@ -13,18 +13,40 @@ ) +def split_strip(s): + """Split string and strip each component sep by comma + + >>> split_strip("foo, bar,") + ['foo', 'bar'] + + >>> split_strip("") + [] + + >>> split_strip(None) + [] + """ + s = (s or "").strip(" ,") + if not s: + return [] + return [x.strip() for x in s.split(",")] + + def _overload_load_information_from_description_file(module, mod_path=None): res = _original_load_information_from_description_file(module, mod_path=None) auto_install = res.get("auto_install", False) - modules_auto_install_enabled = config.get("modules_auto_install_enabled", []) - modules_auto_install_disabled = config.get("modules_auto_install_disabled", []) + modules_auto_install_enabled = split_strip( + config.get("modules_auto_install_enabled") + ) + modules_auto_install_disabled = split_strip( + config.get("modules_auto_install_disabled") + ) - if module in modules_auto_install_disabled and auto_install: + if auto_install and module in modules_auto_install_disabled: _logger.info("Module '%s' has been marked as not auto installable." % module) res["auto_install"] = False - if module in modules_auto_install_enabled and not auto_install: + if not auto_install and module in modules_auto_install_enabled: _logger.info("Module '%s' has been marked as auto installable." % module) res["auto_install"] = True @@ -32,6 +54,7 @@ def _overload_load_information_from_description_file(module, mod_path=None): def post_load(): + _logger.info("Applying patch module_change_auto_intall") modules.module.load_information_from_description_file = ( _overload_load_information_from_description_file ) From 323ca861175c423dd177477feb04e6961df0da4e Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 26 May 2021 20:50:15 +0000 Subject: [PATCH 06/36] module_change_auto_install 14.0.1.0.2 --- module_change_auto_install/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module_change_auto_install/__manifest__.py b/module_change_auto_install/__manifest__.py index 6a6220a2a16..c3d3cfdc8f7 100644 --- a/module_change_auto_install/__manifest__.py +++ b/module_change_auto_install/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Change auto installable modules", "summary": "Customize auto installables modules by configuration", - "version": "14.0.1.0.1", + "version": "14.0.1.0.2", "category": "Tools", "maintainers": ["legalsylvain"], "author": "GRAP, Odoo Community Association (OCA)", From 3fbb0053fc2c9ba4e4f4b6fad957fa90184a0c7a Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 22 Dec 2021 16:14:56 +0100 Subject: [PATCH 07/36] [FIX] module_change_auto_install : auto_install is now a set of dependencies. (before, was boolean) --- module_change_auto_install/patch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module_change_auto_install/patch.py b/module_change_auto_install/patch.py index 14dc00fa675..259dfc23910 100644 --- a/module_change_auto_install/patch.py +++ b/module_change_auto_install/patch.py @@ -48,7 +48,7 @@ def _overload_load_information_from_description_file(module, mod_path=None): if not auto_install and module in modules_auto_install_enabled: _logger.info("Module '%s' has been marked as auto installable." % module) - res["auto_install"] = True + res["auto_install"] = set(res["depends"]) return res From ea7668d8644729928a6f101d2c8dc174858587a1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 22 Dec 2021 17:48:51 +0000 Subject: [PATCH 08/36] module_change_auto_install 14.0.1.0.3 --- module_change_auto_install/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module_change_auto_install/__manifest__.py b/module_change_auto_install/__manifest__.py index c3d3cfdc8f7..5507116876f 100644 --- a/module_change_auto_install/__manifest__.py +++ b/module_change_auto_install/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Change auto installable modules", "summary": "Customize auto installables modules by configuration", - "version": "14.0.1.0.2", + "version": "14.0.1.0.3", "category": "Tools", "maintainers": ["legalsylvain"], "author": "GRAP, Odoo Community Association (OCA)", From 9fcfcd68d15cf51d08c7a3bb6cb1ca0408499695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dept=2E=20T=C3=A9cnico?= Date: Mon, 14 Feb 2022 11:41:41 +0000 Subject: [PATCH 09/36] Added translation using Weblate (Catalan) --- module_change_auto_install/i18n/ca.po | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 module_change_auto_install/i18n/ca.po diff --git a/module_change_auto_install/i18n/ca.po b/module_change_auto_install/i18n/ca.po new file mode 100644 index 00000000000..c038a7eecbd --- /dev/null +++ b/module_change_auto_install/i18n/ca.po @@ -0,0 +1,14 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" From 7151c4873bdfd27bdfb535643fe00e19c8f30b3c Mon Sep 17 00:00:00 2001 From: Fai Date: Mon, 19 Sep 2022 09:54:50 +0800 Subject: [PATCH 10/36] [MIG] module_change_auto_install: Migration to 15.0 --- module_change_auto_install/README.rst | 10 +++++----- module_change_auto_install/__manifest__.py | 2 +- module_change_auto_install/i18n/ca.po | 2 +- .../i18n/module_change_auto_install.pot | 2 +- .../static/description/index.html | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/module_change_auto_install/README.rst b/module_change_auto_install/README.rst index 725a259e429..47e665c1ae2 100644 --- a/module_change_auto_install/README.rst +++ b/module_change_auto_install/README.rst @@ -14,13 +14,13 @@ Change auto installable modules :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/14.0/module_change_auto_install + :target: https://github.com/OCA/server-tools/tree/15.0/module_change_auto_install :alt: OCA/server-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-14-0/server-tools-14-0-module_change_auto_install + :target: https://translation.odoo-community.org/projects/server-tools-15-0/server-tools-15-0-module_change_auto_install :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/149/14.0 + :target: https://runbot.odoo-community.org/runbot/149/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -105,7 +105,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -143,6 +143,6 @@ Current `maintainer `__: |maintainer-legalsylvain| -This module is part of the `OCA/server-tools `_ project on GitHub. +This module is part of the `OCA/server-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/module_change_auto_install/__manifest__.py b/module_change_auto_install/__manifest__.py index 5507116876f..1e183fb16d3 100644 --- a/module_change_auto_install/__manifest__.py +++ b/module_change_auto_install/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Change auto installable modules", "summary": "Customize auto installables modules by configuration", - "version": "14.0.1.0.3", + "version": "15.0.1.0.0", "category": "Tools", "maintainers": ["legalsylvain"], "author": "GRAP, Odoo Community Association (OCA)", diff --git a/module_change_auto_install/i18n/ca.po b/module_change_auto_install/i18n/ca.po index c038a7eecbd..6ff2ef5f332 100644 --- a/module_change_auto_install/i18n/ca.po +++ b/module_change_auto_install/i18n/ca.po @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" diff --git a/module_change_auto_install/i18n/module_change_auto_install.pot b/module_change_auto_install/i18n/module_change_auto_install.pot index 4d8b20f912f..a11baf5cd77 100644 --- a/module_change_auto_install/i18n/module_change_auto_install.pot +++ b/module_change_auto_install/i18n/module_change_auto_install.pot @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/module_change_auto_install/static/description/index.html b/module_change_auto_install/static/description/index.html index 462cf550bdb..0dbf4816e7d 100644 --- a/module_change_auto_install/static/description/index.html +++ b/module_change_auto_install/static/description/index.html @@ -367,7 +367,7 @@

Change auto installable modules

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

In odoo, by default some modules are marked as auto installable by the auto_install key present in the manifest.

    @@ -448,7 +448,7 @@

    Bug Tracker

    Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

    +feedback.

    Do not contact contributors directly about support or help with technical issues.

    @@ -474,7 +474,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    legalsylvain

    -

    This module is part of the OCA/server-tools project on GitHub.

    +

    This module is part of the OCA/server-tools project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    From 96b9b414fd0a39e3eeb30268b28b36f87f3088c9 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Thu, 13 Oct 2022 14:24:43 +0200 Subject: [PATCH 11/36] [PORT] module_change_auto_install from 15.0 to 16.0 --- module_change_auto_install/__manifest__.py | 2 +- module_change_auto_install/i18n/fr.po | 15 ++++ module_change_auto_install/patch.py | 90 ++++++++++++------- .../readme/CONFIGURE.rst | 42 +++++++-- module_change_auto_install/tests/__init__.py | 1 + .../tests/test_module.py | 30 +++++++ 6 files changed, 140 insertions(+), 40 deletions(-) create mode 100644 module_change_auto_install/i18n/fr.po create mode 100644 module_change_auto_install/tests/__init__.py create mode 100644 module_change_auto_install/tests/test_module.py diff --git a/module_change_auto_install/__manifest__.py b/module_change_auto_install/__manifest__.py index 1e183fb16d3..c5e4106a4c3 100644 --- a/module_change_auto_install/__manifest__.py +++ b/module_change_auto_install/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Change auto installable modules", "summary": "Customize auto installables modules by configuration", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "category": "Tools", "maintainers": ["legalsylvain"], "author": "GRAP, Odoo Community Association (OCA)", diff --git a/module_change_auto_install/i18n/fr.po b/module_change_auto_install/i18n/fr.po new file mode 100644 index 00000000000..a07e4484b9a --- /dev/null +++ b/module_change_auto_install/i18n/fr.po @@ -0,0 +1,15 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-13 13:04+0000\n" +"PO-Revision-Date: 2022-10-13 13:04+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" diff --git a/module_change_auto_install/patch.py b/module_change_auto_install/patch.py index 259dfc23910..b77b3ee1403 100644 --- a/module_change_auto_install/patch.py +++ b/module_change_auto_install/patch.py @@ -8,56 +8,84 @@ from odoo.tools import config _logger = logging.getLogger(__name__) -_original_load_information_from_description_file = ( - modules.module.load_information_from_description_file -) +_original_load_manifest = modules.module.load_manifest -def split_strip(s): - """Split string and strip each component sep by comma +def _get_modules_dict_auto_install_config(config_value): + """Given a configuration parameter name, return a dict of + {module_name: modules_list or False} - >>> split_strip("foo, bar,") - ['foo', 'bar'] + if the odoo.cfg file contains + + modules_auto_install_enabled = + web_responsive:web, + base_technical_features:, + point_of_sale:sale/purchase, + account_usability + + >>> split_strip('modules_auto_install_enabled') + { + 'web_responsive': ['web'], + 'base_technical_features': [], + 'point_of_sale': ['sale', 'purchase'], + 'account_usability': False, + } - >>> split_strip("") - [] - >>> split_strip(None) - [] """ - s = (s or "").strip(" ,") - if not s: - return [] - return [x.strip() for x in s.split(",")] + res = {} + config_value = (config_value or "").strip(" ,") + config_list = [x.strip() for x in config_value.split(",")] + for item in config_list: + if ":" in item: + res[item.split(":")[0]] = ( + item.split(":")[1] and item.split(":")[1].split("/") or [] + ) + else: + res[item] = True + return res -def _overload_load_information_from_description_file(module, mod_path=None): - res = _original_load_information_from_description_file(module, mod_path=None) +def _overload_load_manifest(module, mod_path=None): + + res = _original_load_manifest(module, mod_path=None) auto_install = res.get("auto_install", False) - modules_auto_install_enabled = split_strip( + modules_auto_install_enabled_dict = _get_modules_dict_auto_install_config( config.get("modules_auto_install_enabled") ) - modules_auto_install_disabled = split_strip( + modules_auto_install_disabled_dict = _get_modules_dict_auto_install_config( config.get("modules_auto_install_disabled") ) - if auto_install and module in modules_auto_install_disabled: - _logger.info("Module '%s' has been marked as not auto installable." % module) + if auto_install and module in modules_auto_install_disabled_dict.keys(): + _logger.info("Module '%s' has been marked as NOT auto installable." % module) res["auto_install"] = False - if not auto_install and module in modules_auto_install_enabled: - _logger.info("Module '%s' has been marked as auto installable." % module) - res["auto_install"] = set(res["depends"]) + if not auto_install and module in modules_auto_install_enabled_dict.keys(): + specific_dependencies = modules_auto_install_enabled_dict.get(module) + if type(specific_dependencies) is bool: + # Classical case + _logger.info("Module '%s' has been marked as auto installable." % module) + res["auto_install"] = set(res["depends"]) + else: + if specific_dependencies: + _logger.info( + "Module '%s' has been marked as auto installable if '%s' are installed" + % (module, ",".join(specific_dependencies)) + ) + else: + _logger.info( + "Module '%s' has been marked as auto installable in ALL CASES." + % module + ) + + res["auto_install"] = set(specific_dependencies) return res def post_load(): - _logger.info("Applying patch module_change_auto_intall") - modules.module.load_information_from_description_file = ( - _overload_load_information_from_description_file - ) - modules.load_information_from_description_file = ( - _overload_load_information_from_description_file - ) + _logger.info("Aplying patch module_change_auto_intall ...") + modules.module.load_manifest = _overload_load_manifest + modules.load_manifest = _overload_load_manifest diff --git a/module_change_auto_install/readme/CONFIGURE.rst b/module_change_auto_install/readme/CONFIGURE.rst index e766d4315d3..7bb8d37bd63 100644 --- a/module_change_auto_install/readme/CONFIGURE.rst +++ b/module_change_auto_install/readme/CONFIGURE.rst @@ -16,18 +16,44 @@ server_wide_modules = web,module_change_auto_install - modules_auto_install_disabled = partner_autocomplete,iap,mail_bot,account_edi,account_edi_facturx,account_edi_ubl + modules_auto_install_disabled = + partner_autocomplete, + iap, + mail_bot - modules_auto_install_enabled = web_responsive,web_no_bubble,base_technical_features,disable_odoo_online,account_menu + modules_auto_install_enabled = + web_responsive:web, + base_technical_features, + disable_odoo_online, + account_usability Run your instance and check logs. Modules that has been altered should be present in your log, at the load of your instance: .. code-block:: shell - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_facturx' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_ubl' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as NOT auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as NOT auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as NOT auto installable. INFO db_name odoo.modules.loading: 42 modules loaded in 0.32s, 0 queries (+0 extra) + +**Advanced Configuration Possibilities** + +if your ``odoo.cfg`` file contains the following configuration: + +.. code-block:: shell + + modules_auto_install_enabled = + account_usability, + web_responsive:web, + base_technical_features:, + point_of_sale:sale/purchase + +The behaviour will be the following: + +* ``account_usability`` module will be installed as soon as all the default dependencies are installed. (here ``account``) + +* ``web_responsive`` module will be installed as soon as ``web`` is installed. (Althought ``web_responsive`` depends on ``web`` and ``mail``) + +* ``base_technical_features`` will be ALWAYS installed + +* ``point_of_sale`` module will be installed as soon as ``sale`` and ``purchase`` module are installed. diff --git a/module_change_auto_install/tests/__init__.py b/module_change_auto_install/tests/__init__.py new file mode 100644 index 00000000000..d9b96c4fa5a --- /dev/null +++ b/module_change_auto_install/tests/__init__.py @@ -0,0 +1 @@ +from . import test_module diff --git a/module_change_auto_install/tests/test_module.py b/module_change_auto_install/tests/test_module.py new file mode 100644 index 00000000000..7302d0cb157 --- /dev/null +++ b/module_change_auto_install/tests/test_module.py @@ -0,0 +1,30 @@ +# Copyright 2015-2017 Camptocamp SA +# Copyright 2020 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + +from odoo.addons.module_change_auto_install.patch import ( + _get_modules_dict_auto_install_config, +) + +# from ..models.base import disable_changeset + + +class TestModule(TransactionCase): + + _EXPECTED_RESULTS = { + "web_responsive": {"web_responsive": True}, + "sale, purchase,": {"sale": True, "purchase": True}, + "web_responsive:web,base_technical_features:," + "point_of_sale:sale/purchase,account_usability": { + "web_responsive": ["web"], + "base_technical_features": [], + "point_of_sale": ["sale", "purchase"], + "account_usability": True, + }, + } + + def test_config_parsing(self): + for k, v in self._EXPECTED_RESULTS.items(): + self.assertEqual(_get_modules_dict_auto_install_config(k), v) From 7a2c4e5a134d5dbf82f8e75f24f0ea82d697442c Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 8 Nov 2022 10:47:23 +0000 Subject: [PATCH 12/36] [UPD] Update module_change_auto_install.pot --- module_change_auto_install/i18n/module_change_auto_install.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module_change_auto_install/i18n/module_change_auto_install.pot b/module_change_auto_install/i18n/module_change_auto_install.pot index a11baf5cd77..78d58d53fe0 100644 --- a/module_change_auto_install/i18n/module_change_auto_install.pot +++ b/module_change_auto_install/i18n/module_change_auto_install.pot @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 91eb0fac136b29efb5f4bd5e6a6c46cee47a3be1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 8 Nov 2022 10:50:18 +0000 Subject: [PATCH 13/36] [UPD] README.rst --- module_change_auto_install/README.rst | 52 ++++++++++++++----- .../static/description/index.html | 42 +++++++++++---- 2 files changed, 70 insertions(+), 24 deletions(-) diff --git a/module_change_auto_install/README.rst b/module_change_auto_install/README.rst index 47e665c1ae2..1c3c6df6325 100644 --- a/module_change_auto_install/README.rst +++ b/module_change_auto_install/README.rst @@ -14,13 +14,13 @@ Change auto installable modules :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/15.0/module_change_auto_install + :target: https://github.com/OCA/server-tools/tree/16.0/module_change_auto_install :alt: OCA/server-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-15-0/server-tools-15-0-module_change_auto_install + :target: https://translation.odoo-community.org/projects/server-tools-16-0/server-tools-16-0-module_change_auto_install :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/149/15.0 + :target: https://runbot.odoo-community.org/runbot/149/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -75,22 +75,48 @@ Configuration server_wide_modules = web,module_change_auto_install - modules_auto_install_disabled = partner_autocomplete,iap,mail_bot,account_edi,account_edi_facturx,account_edi_ubl + modules_auto_install_disabled = + partner_autocomplete, + iap, + mail_bot - modules_auto_install_enabled = web_responsive,web_no_bubble,base_technical_features,disable_odoo_online,account_menu + modules_auto_install_enabled = + web_responsive:web, + base_technical_features, + disable_odoo_online, + account_usability Run your instance and check logs. Modules that has been altered should be present in your log, at the load of your instance: .. code-block:: shell - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_facturx' has been marked as not auto installable. - INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_ubl' has been marked as not auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as NOT auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as NOT auto installable. + INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as NOT auto installable. INFO db_name odoo.modules.loading: 42 modules loaded in 0.32s, 0 queries (+0 extra) +**Advanced Configuration Possibilities** + +if your ``odoo.cfg`` file contains the following configuration: + +.. code-block:: shell + + modules_auto_install_enabled = + account_usability, + web_responsive:web, + base_technical_features:, + point_of_sale:sale/purchase + +The behaviour will be the following: + +* ``account_usability`` module will be installed as soon as all the default dependencies are installed. (here ``account``) + +* ``web_responsive`` module will be installed as soon as ``web`` is installed. (Althought ``web_responsive`` depends on ``web`` and ``mail``) + +* ``base_technical_features`` will be ALWAYS installed + +* ``point_of_sale`` module will be installed as soon as ``sale`` and ``purchase`` module are installed. + Development =========== @@ -105,7 +131,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -143,6 +169,6 @@ Current `maintainer `__: |maintainer-legalsylvain| -This module is part of the `OCA/server-tools `_ project on GitHub. +This module is part of the `OCA/server-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/module_change_auto_install/static/description/index.html b/module_change_auto_install/static/description/index.html index 0dbf4816e7d..1a2103e11e9 100644 --- a/module_change_auto_install/static/description/index.html +++ b/module_change_auto_install/static/description/index.html @@ -367,7 +367,7 @@

    Change auto installable modules

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

    +

    Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

    In odoo, by default some modules are marked as auto installable by the auto_install key present in the manifest.

      @@ -421,20 +421,40 @@

      Configuration

       server_wide_modules = web,module_change_auto_install
       
      -modules_auto_install_disabled = partner_autocomplete,iap,mail_bot,account_edi,account_edi_facturx,account_edi_ubl
      +modules_auto_install_disabled =
      +    partner_autocomplete,
      +    iap,
      +    mail_bot
       
      -modules_auto_install_enabled = web_responsive,web_no_bubble,base_technical_features,disable_odoo_online,account_menu
      +modules_auto_install_enabled =
      +    web_responsive:web,
      +    base_technical_features,
      +    disable_odoo_online,
      +    account_usability
       

      Run your instance and check logs. Modules that has been altered should be present in your log, at the load of your instance:

      -INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as not auto installable.
      -INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as not auto installable.
      -INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as not auto installable.
      -INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi' has been marked as not auto installable.
      -INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_facturx' has been marked as not auto installable.
      -INFO db_name odoo.addons.module_change_auto_install.patch: Module 'account_edi_ubl' has been marked as not auto installable.
      +INFO db_name odoo.addons.module_change_auto_install.patch: Module 'iap' has been marked as NOT auto installable.
      +INFO db_name odoo.addons.module_change_auto_install.patch: Module 'mail_bot' has been marked as NOT auto installable.
      +INFO db_name odoo.addons.module_change_auto_install.patch: Module 'partner_autocomplete' has been marked as NOT auto installable.
       INFO db_name odoo.modules.loading: 42 modules loaded in 0.32s, 0 queries (+0 extra)
       
      +

      Advanced Configuration Possibilities

      +

      if your odoo.cfg file contains the following configuration:

      +
      +modules_auto_install_enabled =
      +    account_usability,
      +    web_responsive:web,
      +    base_technical_features:,
      +    point_of_sale:sale/purchase
      +
      +

      The behaviour will be the following:

      +
        +
      • account_usability module will be installed as soon as all the default dependencies are installed. (here account)
      • +
      • web_responsive module will be installed as soon as web is installed. (Althought web_responsive depends on web and mail)
      • +
      • base_technical_features will be ALWAYS installed
      • +
      • point_of_sale module will be installed as soon as sale and purchase module are installed.
      • +

      Development

      @@ -448,7 +468,7 @@

      Bug Tracker

      Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

      +feedback.

      Do not contact contributors directly about support or help with technical issues.

      @@ -474,7 +494,7 @@

      Maintainers

      promote its widespread use.

      Current maintainer:

      legalsylvain

      -

      This module is part of the OCA/server-tools project on GitHub.

      +

      This module is part of the OCA/server-tools project on GitHub.

      You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

      From d13e74c5b5e5f0c6648a0bd82b12c14cfa5f70da Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 8 Nov 2022 12:29:13 +0000 Subject: [PATCH 14/36] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: server-tools-16.0/server-tools-16.0-module_change_auto_install Translate-URL: https://translation.odoo-community.org/projects/server-tools-16-0/server-tools-16-0-module_change_auto_install/ --- module_change_auto_install/i18n/ca.po | 14 -------------- module_change_auto_install/i18n/fr.po | 15 --------------- 2 files changed, 29 deletions(-) diff --git a/module_change_auto_install/i18n/ca.po b/module_change_auto_install/i18n/ca.po index 6ff2ef5f332..e69de29bb2d 100644 --- a/module_change_auto_install/i18n/ca.po +++ b/module_change_auto_install/i18n/ca.po @@ -1,14 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" diff --git a/module_change_auto_install/i18n/fr.po b/module_change_auto_install/i18n/fr.po index a07e4484b9a..e69de29bb2d 100644 --- a/module_change_auto_install/i18n/fr.po +++ b/module_change_auto_install/i18n/fr.po @@ -1,15 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-13 13:04+0000\n" -"PO-Revision-Date: 2022-10-13 13:04+0000\n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" From 3381637ca98d6bf239887b798be831aee1915527 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 16:49:46 +0000 Subject: [PATCH 15/36] [UPD] README.rst --- module_change_auto_install/README.rst | 15 ++-- .../static/description/index.html | 90 ++++++++++--------- 2 files changed, 55 insertions(+), 50 deletions(-) diff --git a/module_change_auto_install/README.rst b/module_change_auto_install/README.rst index 1c3c6df6325..e0ac8ff0884 100644 --- a/module_change_auto_install/README.rst +++ b/module_change_auto_install/README.rst @@ -2,10 +2,13 @@ Change auto installable modules =============================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:98a3d5d558f2f0c3c28e4da83aab64faf557fe10382a6faa7d577666177b9fd0 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Change auto installable modules .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/server-tools-16-0/server-tools-16-0-module_change_auto_install :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/149/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| In odoo, by default some modules are marked as auto installable by the ``auto_install`` key present in the manifest. @@ -130,7 +133,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/module_change_auto_install/static/description/index.html b/module_change_auto_install/static/description/index.html index 1a2103e11e9..4efe2212bc8 100644 --- a/module_change_auto_install/static/description/index.html +++ b/module_change_auto_install/static/description/index.html @@ -1,20 +1,20 @@ - + - + Change auto installable modules -
      -

      Change auto installable modules

      +
      + + +Odoo Community Association + +
      +

      Change auto installable modules

      -

      Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

      +

      Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

      In odoo, by default some modules are marked as auto installable by the auto_install key present in the manifest.

        @@ -401,7 +406,7 @@

        Change auto installable modules

      -

      Installation

      +

      Installation

      You don’t have to install this module. To make the features working :

      • make the module module_change_auto_install available in your @@ -411,7 +416,7 @@

        Installation

      -

      Configuration

      +

      Configuration

      • Edit your odoo.cfg configuration file:
      • Add the module module_change_auto_install in the @@ -481,14 +486,14 @@

        Configuration

      -

      Development

      +

      Development

      If you upgrade your odoo Instance from a major version to another, using the OCA Free Software project “OpenUpgrade”, you can also use this module during the upgrade process, to avoid the installation of useless new modules.

      -

      Bug Tracker

      +

      Bug Tracker

      Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -496,15 +501,15 @@

      Bug Tracker

      Do not contact contributors directly about support or help with technical issues.

      -

      Credits

      +

      Credits

      -

      Authors

      +

      Authors

      • GRAP
      -

      Contributors

      +

      Contributors

      -

      Maintainers

      +

      Maintainers

      This module is maintained by the OCA.

      Odoo Community Association @@ -529,5 +534,6 @@

      Maintainers

      +
      From 494a9b7d342256d25eeb8441c2488bfa6c09dfcb Mon Sep 17 00:00:00 2001 From: Raf Ven Date: Mon, 22 Sep 2025 16:17:51 +0200 Subject: [PATCH 36/36] [MIG] module_change_auto_install: Migration to 19.0 --- module_change_auto_install/README.rst | 90 ++++++++++--------- module_change_auto_install/__manifest__.py | 2 +- module_change_auto_install/patch.py | 89 +++++++++++------- .../readme/CONFIGURE.md | 12 +-- .../static/description/index.html | 28 +++--- module_change_auto_install/tests/__init__.py | 1 + .../tests/test_module.py | 2 - .../tests/test_patch.py | 76 ++++++++++++++++ 8 files changed, 205 insertions(+), 95 deletions(-) create mode 100644 module_change_auto_install/tests/test_patch.py diff --git a/module_change_auto_install/README.rst b/module_change_auto_install/README.rst index 886d0fc4a7b..7df89b60bb9 100644 --- a/module_change_auto_install/README.rst +++ b/module_change_auto_install/README.rst @@ -21,13 +21,13 @@ Change auto installable modules :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/18.0/module_change_auto_install + :target: https://github.com/OCA/server-tools/tree/19.0/module_change_auto_install :alt: OCA/server-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-module_change_auto_install + :target: https://translation.odoo-community.org/projects/server-tools-19-0/server-tools-19-0-module_change_auto_install :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -35,15 +35,15 @@ Change auto installable modules In odoo, by default some modules are marked as auto installable by the ``auto_install`` key present in the manifest. -- This feature is very useful for "glue" modules that allow two modules - to work together. (A typical example is ``sale_stock`` which allows - ``sale`` and ``stock`` modules to work together). -- However, Odoo SA also marks some modules as auto installable, even - though this is not technically required. This can happen for modules - the company wants to promote like ``iap``, modules with a big wow - effect like ``partner_autocomplete``, or some modules they consider - useful by default like ``account_edi``. See the discussion: - https://github.com/odoo/odoo/issues/71190 +- This feature is very useful for "glue" modules that allow two modules + to work together. (A typical example is ``sale_stock`` which allows + ``sale`` and ``stock`` modules to work together). +- However, Odoo SA also marks some modules as auto installable, even + though this is not technically required. This can happen for modules + the company wants to promote like ``iap``, modules with a big wow + effect like ``partner_autocomplete``, or some modules they consider + useful by default like ``account_edi``. See the discussion: + https://github.com/odoo/odoo/issues/71190 This module allows to change by configuration, the list of auto installable modules, adding or removing some modules to auto install. @@ -58,25 +58,27 @@ Installation You don't have to install this module. To make the features working : -- make the module ``module_change_auto_install`` available in your - addons path -- either update your ``odoo.cfg`` or set the environment variables - following the "Configure" section +- make the module ``module_change_auto_install`` available in your + addons path +- either update your ``odoo.cfg`` or set the environment variables + following the "Configure" section Configuration ============= -- Edit your ``odoo.cfg`` configuration file: -- Add the module ``module_change_auto_install`` in the - ``server_wide_modules`` list. -- (optional) Add a new entry ``modules_auto_install_disabled`` to mark a - list of modules as NOT auto installable. The environment variable - ``ODOO_MODULES_AUTO_INSTALL_DISABLED`` can also be set. -- (optional) Add a new entry ``modules_auto_install_enabled`` to mark a - list of modules as auto installable. This feature can be usefull for - companies that are hosting a lot of Odoo instances for many customers, - and want some modules to be always installed. The environment variable - ``ODOO_MODULES_AUTO_INSTALL_ENABLED`` can also be set. +- Edit your ``odoo.cfg`` configuration file: +- Add the module ``module_change_auto_install`` in the + ``server_wide_modules`` list. +- (optional) Add a new entry ``modules_disabled`` beneath a new section + ``[module_change_auto_install]`` to mark a list of modules as NOT + auto installable. The environment variable + ``ODOO_MODULES_AUTO_INSTALL_DISABLED`` can also be set. +- (optional) Add a new entry ``modules_enabled`` beneath a new section + ``[module_change_auto_install]`` to mark a list of modules as auto + installable. This feature can be usefull for companies that are + hosting a lot of Odoo instances for many customers, and want some + modules to be always installed. The environment variable + ``ODOO_MODULES_AUTO_INSTALL_ENABLED`` can also be set. The values in the configuration file takes precedence over the environment variable values. @@ -87,12 +89,13 @@ environment variable values. server_wide_modules = web,module_change_auto_install - modules_auto_install_disabled = + [module_change_auto_install] + modules_disabled = partner_autocomplete, iap, mail_bot - modules_auto_install_enabled = + modules_enabled = web_responsive:web, base_technical_features, disable_odoo_online, @@ -121,7 +124,8 @@ if your ``odoo.cfg`` file contains the following configuration: .. code:: cfg - modules_auto_install_enabled = + [module_change_auto_install] + modules_enabled = account_usability, web_responsive:web, base_technical_features:, @@ -129,14 +133,14 @@ if your ``odoo.cfg`` file contains the following configuration: The behaviour will be the following: -- ``account_usability`` module will be installed as soon as all the - default dependencies are installed. (here ``account``) -- ``web_responsive`` module will be installed as soon as ``web`` is - installed. (Althought ``web_responsive`` depends on ``web`` and - ``mail``) -- ``base_technical_features`` will be ALWAYS installed -- ``point_of_sale`` module will be installed as soon as ``sale`` and - ``purchase`` module are installed. +- ``account_usability`` module will be installed as soon as all the + default dependencies are installed. (here ``account``) +- ``web_responsive`` module will be installed as soon as ``web`` is + installed. (Althought ``web_responsive`` depends on ``web`` and + ``mail``) +- ``base_technical_features`` will be ALWAYS installed +- ``point_of_sale`` module will be installed as soon as ``sale`` and + ``purchase`` module are installed. When using environment variables, the same configuration is: @@ -158,7 +162,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -173,11 +177,11 @@ Authors Contributors ------------ -- Sylvain LE GAL +- Sylvain LE GAL -- XCG Consulting, part of `Orbeet `__: +- XCG Consulting, part of `Orbeet `__: - - Vincent Hatakeyama + - Vincent Hatakeyama Maintainers ----------- @@ -200,6 +204,6 @@ Current `maintainer `__: |maintainer-legalsylvain| -This module is part of the `OCA/server-tools `_ project on GitHub. +This module is part of the `OCA/server-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/module_change_auto_install/__manifest__.py b/module_change_auto_install/__manifest__.py index 0120d9f38e2..92534d516ba 100644 --- a/module_change_auto_install/__manifest__.py +++ b/module_change_auto_install/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Change auto installable modules", "summary": "Customize auto installables modules by configuration", - "version": "18.0.1.0.3", + "version": "19.0.1.0.0", "category": "Tools", "maintainers": ["legalsylvain"], "author": "GRAP, Odoo Community Association (OCA)", diff --git a/module_change_auto_install/patch.py b/module_change_auto_install/patch.py index 6adbb0fc6b5..e4dcf83e689 100644 --- a/module_change_auto_install/patch.py +++ b/module_change_auto_install/patch.py @@ -2,14 +2,15 @@ # @author: Sylvain LE GAL (https://twitter.com/legalsylvain) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import configparser import logging import os -from odoo import modules +from odoo.modules.module import Manifest from odoo.tools import config _logger = logging.getLogger(__name__) -_original_load_manifest = modules.module.load_manifest +_original_init = Manifest.__init__ def _get_modules_dict_auto_install_config(config_value): @@ -17,14 +18,14 @@ def _get_modules_dict_auto_install_config(config_value): {module_name: modules_list or False} if the odoo.cfg file contains - - modules_auto_install_enabled = + [module_change_auto_install] + modules_enabled = web_responsive:web, base_technical_features:, point_of_sale:sale/purchase, account_usability - >>> split_strip('modules_auto_install_enabled') + >>> split_strip('modules_enabled') { 'web_responsive': ['web'], 'base_technical_features': [], @@ -36,49 +37,52 @@ def _get_modules_dict_auto_install_config(config_value): """ res = {} config_value = (config_value or "").strip(" ,") - config_list = [x.strip() for x in config_value.split(",")] - for item in config_list: - if ":" in item: - res[item.split(":")[0]] = ( - item.split(":")[1] and item.split(":")[1].split("/") or [] - ) - else: - res[item] = True + if config_value: + config_list = [x.strip() for x in config_value.split(",")] + for item in config_list: + if ":" in item: + res[item.split(":")[0]] = ( + item.split(":")[1] and item.split(":")[1].split("/") or [] + ) + else: + res[item] = True return res -def _overload_load_manifest(module, mod_path=None): - res = _original_load_manifest(module, mod_path=None) - if not res: - # Specific case where a previously available module marked as auto installable - # is NOT available in the addons path. - # In that case, avoid to crash when trying to get 'depends' key. - return res - auto_install = res.get("auto_install", False) - - modules_auto_install_enabled_dict = _get_modules_dict_auto_install_config( +def _get_modules_auto_install_enabled_dict(): + return _get_modules_dict_auto_install_config( config.get( - "modules_auto_install_enabled", + "module_change_auto_install.modules_enabled", os.environ.get("ODOO_MODULES_AUTO_INSTALL_ENABLED"), ) ) - modules_auto_install_disabled_dict = _get_modules_dict_auto_install_config( + + +def _get_modules_auto_install_disabled_dict(): + return _get_modules_dict_auto_install_config( config.get( - "modules_auto_install_disabled", + "module_change_auto_install.modules_disabled", os.environ.get("ODOO_MODULES_AUTO_INSTALL_DISABLED"), ) ) + +def _get_auto_install_flag(self): + modules_auto_install_enabled_dict = _get_modules_auto_install_enabled_dict() + modules_auto_install_disabled_dict = _get_modules_auto_install_disabled_dict() + auto_install = self._Manifest__manifest_cached["auto_install"] + module = self.name + if auto_install and module in modules_auto_install_disabled_dict.keys(): _logger.info(f"Module '{module}' has been marked as NOT auto installable.") - res["auto_install"] = False + return False if not auto_install and module in modules_auto_install_enabled_dict.keys(): specific_dependencies = modules_auto_install_enabled_dict.get(module) if isinstance(specific_dependencies, bool): # Classical case _logger.info(f"Module '{module}' has been marked as auto installable.") - res["auto_install"] = set(res["depends"]) + return set(self._Manifest__manifest_cached["depends"]) else: if specific_dependencies: _logger.info( @@ -91,12 +95,33 @@ def _overload_load_manifest(module, mod_path=None): f"ALL CASES." ) - res["auto_install"] = set(specific_dependencies) + return set(specific_dependencies) + return auto_install - return res + +def _patched_init(self, *, path: str, manifest_content: dict): + _original_init(self, path=path, manifest_content=manifest_content) + # Post-process before cached_property kicks in + self.auto_install = _get_auto_install_flag(self) + if "auto_install" in self._Manifest__manifest_cached: + self._Manifest__manifest_cached["auto_install"] = self.auto_install + + +def _load_module_change_auto_install_options(rcfile): + """Load custom [module_change_auto_install] section into config.""" + cp = configparser.ConfigParser() + cp.read([rcfile]) + + if cp.has_section("module_change_auto_install"): + for key, value in cp.items("module_change_auto_install"): + # Store with prefix to avoid collisions + config[f"module_change_auto_install.{key}"] = value + _logger.debug("Loaded custom option %s=%s", key, value) def post_load(): _logger.info("Applying patch module_change_auto_install ...") - modules.module.load_manifest = _overload_load_manifest - modules.load_manifest = _overload_load_manifest + Manifest.__init__ = _patched_init + rcfile = config.get("config") + if rcfile: + _load_module_change_auto_install_options(rcfile) diff --git a/module_change_auto_install/readme/CONFIGURE.md b/module_change_auto_install/readme/CONFIGURE.md index 753ee5b1d36..38bd38c55bb 100644 --- a/module_change_auto_install/readme/CONFIGURE.md +++ b/module_change_auto_install/readme/CONFIGURE.md @@ -1,10 +1,10 @@ - Edit your `odoo.cfg` configuration file: - Add the module `module_change_auto_install` in the `server_wide_modules` list. -- (optional) Add a new entry `modules_auto_install_disabled` to mark a +- (optional) Add a new entry `modules_disabled` beneath a new section `[module_change_auto_install]` to mark a list of modules as NOT auto installable. The environment variable ``ODOO_MODULES_AUTO_INSTALL_DISABLED`` can also be set. -- (optional) Add a new entry `modules_auto_install_enabled` to mark a +- (optional) Add a new entry `modules_enabled` beneath a new section `[module_change_auto_install]` to mark a list of modules as auto installable. This feature can be usefull for companies that are hosting a lot of Odoo instances for many customers, and want some modules to be always installed. @@ -18,12 +18,13 @@ values. ``` cfg server_wide_modules = web,module_change_auto_install -modules_auto_install_disabled = +[module_change_auto_install] +modules_disabled = partner_autocomplete, iap, mail_bot -modules_auto_install_enabled = +modules_enabled = web_responsive:web, base_technical_features, disable_odoo_online, @@ -53,7 +54,8 @@ INFO db_name odoo.modules.loading: 42 modules loaded in 0.32s, 0 queries (+0 ext if your `odoo.cfg` file contains the following configuration: ``` cfg -modules_auto_install_enabled = +[module_change_auto_install] +modules_enabled = account_usability, web_responsive:web, base_technical_features:, diff --git a/module_change_auto_install/static/description/index.html b/module_change_auto_install/static/description/index.html index c5f4f92d350..bfc67ab53aa 100644 --- a/module_change_auto_install/static/description/index.html +++ b/module_change_auto_install/static/description/index.html @@ -374,7 +374,7 @@

      Change auto installable modules

      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:162ad195483bc21079128fc8075e1cf29eba3e177cffd0fbfa8d42f28a27ceab !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

      Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

      +

      Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

      In odoo, by default some modules are marked as auto installable by the auto_install key present in the manifest.

        @@ -421,13 +421,15 @@

        Configuration

      • Edit your odoo.cfg configuration file:
      • Add the module module_change_auto_install in the server_wide_modules list.
      • -
      • (optional) Add a new entry modules_auto_install_disabled to mark a -list of modules as NOT auto installable. The environment variable +
      • (optional) Add a new entry modules_disabled beneath a new section +[module_change_auto_install] to mark a list of modules as NOT +auto installable. The environment variable ODOO_MODULES_AUTO_INSTALL_DISABLED can also be set.
      • -
      • (optional) Add a new entry modules_auto_install_enabled to mark a -list of modules as auto installable. This feature can be usefull for -companies that are hosting a lot of Odoo instances for many customers, -and want some modules to be always installed. The environment variable +
      • (optional) Add a new entry modules_enabled beneath a new section +[module_change_auto_install] to mark a list of modules as auto +installable. This feature can be usefull for companies that are +hosting a lot of Odoo instances for many customers, and want some +modules to be always installed. The environment variable ODOO_MODULES_AUTO_INSTALL_ENABLED can also be set.

      The values in the configuration file takes precedence over the @@ -436,12 +438,13 @@

      Configuration

       server_wide_modules = web,module_change_auto_install
       
      -modules_auto_install_disabled =
      +[module_change_auto_install]
      +modules_disabled =
           partner_autocomplete,
           iap,
           mail_bot
       
      -modules_auto_install_enabled =
      +modules_enabled =
           web_responsive:web,
           base_technical_features,
           disable_odoo_online,
      @@ -463,7 +466,8 @@ 

      Configuration

      Advanced Configuration Possibilities

      if your odoo.cfg file contains the following configuration:

      -modules_auto_install_enabled =
      +[module_change_auto_install]
      +modules_enabled =
           account_usability,
           web_responsive:web,
           base_technical_features:,
      @@ -497,7 +501,7 @@ 

      Bug Tracker

      Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

      +feedback.

      Do not contact contributors directly about support or help with technical issues.

      @@ -529,7 +533,7 @@

      Maintainers

      promote its widespread use.

      Current maintainer:

      legalsylvain

      -

      This module is part of the OCA/server-tools project on GitHub.

      +

      This module is part of the OCA/server-tools project on GitHub.

      You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

      diff --git a/module_change_auto_install/tests/__init__.py b/module_change_auto_install/tests/__init__.py index d9b96c4fa5a..f7aa81860ba 100644 --- a/module_change_auto_install/tests/__init__.py +++ b/module_change_auto_install/tests/__init__.py @@ -1 +1,2 @@ from . import test_module +from . import test_patch diff --git a/module_change_auto_install/tests/test_module.py b/module_change_auto_install/tests/test_module.py index 7719edb98d6..a2a265b1231 100644 --- a/module_change_auto_install/tests/test_module.py +++ b/module_change_auto_install/tests/test_module.py @@ -8,8 +8,6 @@ _get_modules_dict_auto_install_config, ) -# from ..models.base import disable_changeset - class TestModule(TransactionCase): _EXPECTED_RESULTS = { diff --git a/module_change_auto_install/tests/test_patch.py b/module_change_auto_install/tests/test_patch.py new file mode 100644 index 00000000000..01a134f0c11 --- /dev/null +++ b/module_change_auto_install/tests/test_patch.py @@ -0,0 +1,76 @@ +import logging +import os +import tempfile +from unittest.mock import patch + +from odoo.modules.module import Manifest +from odoo.tests.common import TransactionCase +from odoo.tools import config + +import odoo.addons.module_change_auto_install as mcai + +_logger = logging.getLogger(__name__) + + +def make_manifest(name, depends=None, auto_install=False): + tmpdir = tempfile.mkdtemp() + module_path = os.path.join(tmpdir, name) + os.makedirs(module_path, exist_ok=True) + + manifest_content = { + "name": name, + "author": "Author", + "license": "AGPL-3", + "depends": depends or [], + "auto_install": auto_install, + } + return Manifest(path=module_path, manifest_content=manifest_content) + + +class TestModuleChangeAutoInstall(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # Apply patch once for all tests + mcai.post_load() + + def test_default_auto_install(self): + m = make_manifest("test_module", ["base"], auto_install=False) + self.assertFalse(m._Manifest__manifest_cached["auto_install"]) + + @patch.dict( + config.options, + { + "module_change_auto_install.modules_disabled": "test_module", + }, + ) + def test_disabled_module(self): + m = make_manifest("test_module", ["base"], auto_install=True) + self.assertTrue(m._Manifest__manifest_cached["auto_install"] is False) + + @patch.dict( + config.options, {"module_change_auto_install.modules_enabled": "test_module"} + ) + def test_enabled_module_unconditional(self): + m = make_manifest("test_module", ["base"], auto_install=False) + # Should return its dependencies as auto-install condition + self.assertEqual(m._Manifest__manifest_cached["auto_install"], set(["base"])) + + @patch.dict( + config.options, + { + "module_change_auto_install.modules_enabled": "test_module:dep1/dep2", + }, + ) + def test_enabled_module_with_specific_dependencies(self): + m = make_manifest("test_module", ["base"], auto_install=False) + self.assertEqual( + m._Manifest__manifest_cached["auto_install"], set(["dep1", "dep2"]) + ) + + @patch.dict( + config.options, {"module_change_auto_install.modules_enabled": "test_module:"} + ) + def test_enabled_module_all_cases(self): + m = make_manifest("test_module", ["base"], auto_install=False) + self.assertEqual(m._Manifest__manifest_cached["auto_install"], set())