[FIX] take dependencies in account when ordering modules for loading

bzr revid: xmo@openerp.com-20120305142948-2pkrgl8koizhcfbu
This commit is contained in:
Xavier Morel 2012-03-05 15:29:48 +01:00
parent ba1b27d409
commit 10ba2bb9b1
1 changed files with 21 additions and 6 deletions

View File

@ -506,16 +506,31 @@ class Session(openerpweb.Controller):
candidates = [mod for mod in loadable if mod not in loaded]
# Compute active true modules that might be on the web side only
active = set(name for name in candidates
if openerpweb.addons_manifest[name].get('active'))
modules = dict((name, openerpweb.addons_manifest[name].get('depends', []))
for name in candidates
if openerpweb.addons_manifest[name].get('active'))
# Retrieve database installed modules
Modules = req.session.model('ir.module.module')
installed = set(module['name'] for module in Modules.search_read(
[('state','=','installed'), ('name','in', candidates)], ['name']))
modules.update((module['name'], module.get('depends', []))
for module in Modules.search_read(
[('state','=','installed'), ('name','in', candidates)],
['name', 'depends']))
# Merge both
return list(active | installed)
ordered_mods = []
def insert(module):
# already inserted
if module in ordered_mods: return
# should be preloaded
if module not in modules: return
for name in modules[module]:
insert(name)
ordered_mods.append(module)
for name in modules:
insert(name)
return ordered_mods
@openerpweb.jsonrequest
def eval_domain_and_context(self, req, contexts, domains,