summaryrefslogtreecommitdiff
path: root/odoo/addons/base/module/module.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-10-31 12:07:15 +0100
committerChristophe Simonis <chs@odoo.com>2017-10-31 12:07:15 +0100
commita0157f104f7ff94728af20702858b390d771d698 (patch)
tree76003492d182a64389a62127701c99457983d874 /odoo/addons/base/module/module.py
parenta2890c1e76c9c73d80689f78aa2e6665ecdc9f31 (diff)
parentdcce040a637cafb6129ae483d4e31b64dd2070b3 (diff)
[MERGE] forward port branch 10.0 up to dcce040a637
Diffstat (limited to 'odoo/addons/base/module/module.py')
-rw-r--r--odoo/addons/base/module/module.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/odoo/addons/base/module/module.py b/odoo/addons/base/module/module.py
index 873e012362e..3e2eb4749cb 100644
--- a/odoo/addons/base/module/module.py
+++ b/odoo/addons/base/module/module.py
@@ -26,6 +26,7 @@ import odoo
from odoo import api, fields, models, modules, tools, _
from odoo.exceptions import AccessDenied, UserError
from odoo.tools.parse_version import parse_version
+from odoo.tools.misc import topological_sort
_logger = logging.getLogger(__name__)
@@ -763,7 +764,13 @@ class Module(models.Model):
filter_lang = [lang.code for lang in langs]
elif not isinstance(filter_lang, (list, tuple)):
filter_lang = [filter_lang]
- mod_names = [mod.name for mod in self if mod.state in ('installed', 'to install', 'to upgrade')]
+
+ update_mods = self.filtered(lambda r: r.state in ('installed', 'to install', 'to upgrade'))
+ mod_dict = {
+ mod.name: mod.dependencies_id.mapped('name')
+ for mod in update_mods
+ }
+ mod_names = topological_sort(mod_dict)
self.env['ir.translation'].load_module_terms(mod_names, filter_lang)
@api.multi