diff --git a/addons/base_setup/tests/test_res_config.py b/addons/base_setup/tests/test_res_config.py index ab24395a9de..68e1ca126fa 100644 --- a/addons/base_setup/tests/test_res_config.py +++ b/addons/base_setup/tests/test_res_config.py @@ -79,7 +79,7 @@ class TestResConfig(TransactionCase): self.assertTrue(module.state != 'uninstalled', "All set modules should already be installed.") # if we try to install something, raise; so nothing should be installed - with patch('odoo.addons.base.models.ir_module.Module._button_immediate_function', new=just_raise): + with patch('odoo.addons.base.models.ir_module.Module.button_immediate_install', new=just_raise): self.config.execute() def test_install(self): @@ -91,6 +91,6 @@ class TestResConfig(TransactionCase): module_to_install = next(m for m in config_fields['module'] if m.state == 'uninstalled') self.config[f'module_{module_to_install.name}'] = True - with patch('odoo.addons.base.models.ir_module.Module._button_immediate_function', new=just_raise): + with patch('odoo.addons.base.models.ir_module.Module.button_immediate_install', new=just_raise): with self.assertRaisesRegex(Exception, "We should not be here."): self.config.execute() diff --git a/odoo/addons/base/models/ir_module.py b/odoo/addons/base/models/ir_module.py index a8ce7c0947a..a9bf07ce405 100644 --- a/odoo/addons/base/models/ir_module.py +++ b/odoo/addons/base/models/ir_module.py @@ -585,6 +585,9 @@ class Module(models.Model): } def _button_immediate_function(self, function): + if not self.env.registry.ready or self.env.registry._init: + raise UserError(_('The method _button_immediate_install cannot be called on init or non loaded registries. Please use button_install instead.')) + if getattr(threading.current_thread(), 'testing', False): raise RuntimeError( "Module operations inside tests are not transactional and thus forbidden.\n"