summaryrefslogtreecommitdiff
path: root/odoo
diff options
context:
space:
mode:
authorMartin Trigaux <mat@odoo.com>2019-08-27 14:43:44 +0000
committerMartin Trigaux <mat@odoo.com>2019-08-27 14:55:37 +0000
commitca9ea81932b24e5c8f1c032fbcfa949f60f0eb02 (patch)
tree2a509a521f92b8fc9cb847e89fc74c213f5f65c2 /odoo
parent7c219995379c64aa73140b31976ab464a148aafb (diff)
[REV] base: revert 2486259ef99ec85cf
The commit was for performance reasons but introduced regressions as explained at https://github.com/odoo/odoo/pull/29779#issuecomment-524346268 Reverting until finding a better patch closes odoo/odoo#36143 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
Diffstat (limited to 'odoo')
-rw-r--r--odoo/addons/base/models/ir_module.py17
1 files changed, 7 insertions, 10 deletions
diff --git a/odoo/addons/base/models/ir_module.py b/odoo/addons/base/models/ir_module.py
index 4ac31630dc7..330bd41ffea 100644
--- a/odoo/addons/base/models/ir_module.py
+++ b/odoo/addons/base/models/ir_module.py
@@ -356,38 +356,35 @@ class Module(models.Model):
msg = _('Unable to process module "%s" because an external dependency is not met: %s')
raise UserError(msg % (module_name, e.args[0]))
- def _state_update(self, newstate, states_to_update, level=100, checked=False):
+ def _state_update(self, newstate, states_to_update, level=100):
if level < 1:
raise UserError(_('Recursion error in modules dependencies !'))
# whether some modules are installed with demo data
demo = False
- if not checked:
- checked = self.browse()
- for module in (self - checked):
+
+ for module in self:
# determine dependency modules to update/others
update_mods, ready_mods = self.browse(), self.browse()
for dep in module.dependencies_id:
if dep.state == 'unknown':
raise UserError(_("You try to install module '%s' that depends on module '%s'.\nBut the latter module is not available in your system.") % (module.name, dep.name,))
if dep.depend_id.state == newstate:
- ready_mods |= dep.depend_id
+ ready_mods += dep.depend_id
else:
- update_mods |= dep.depend_id
+ update_mods += dep.depend_id
# update dependency modules that require it, and determine demo for module
- update_demo, now_checked = update_mods._state_update(
- newstate, states_to_update, level=level-1, checked=checked)
+ update_demo = update_mods._state_update(newstate, states_to_update, level=level-1)
module_demo = module.demo or update_demo or any(mod.demo for mod in ready_mods)
demo = demo or module_demo
- checked |= now_checked
# check dependencies and update module itself
self.check_external_dependencies(module.name, newstate)
if module.state in states_to_update:
module.write({'state': newstate, 'demo': module_demo})
- return demo, checked | self
+ return demo
@assert_log_admin_access
def button_install(self):