From 3b0419ddc8f7334785a2cc1bff35f3a64ac397d2 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 18 Dec 2011 22:38:17 +0100 Subject: [PATCH] [IMP] module in categ links are installed automatically bzr revid: fp@tinyerp.com-20111218213817-8yyeeaqcigrmftwr --- openerp/addons/base/module/module.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index 6d7c891983b..2d11d5028bf 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -318,7 +318,20 @@ class module(osv.osv): return demo def button_install(self, cr, uid, ids, context=None): + model_obj = self.pool.get('ir.model.data') self.state_update(cr, uid, ids, 'to install', ['uninstalled'], context) + + categ = model_obj.get_object(cr, uid, 'base', 'module_category_hidden_links', context=context) + todo = [] + for mod in categ.module_ids: + if mod.state=='uninstalled': + ok = True + for dep in mod.dependencies_id: + ok = ok and (dep.state in ('to install','installed')) + if ok: + todo.append(mod.id) + if todo: + self.button_install(cr, uid, todo, context=context) return dict(ACTION_DICT, name=_('Install')) def button_immediate_install(self, cr, uid, ids, context=None): @@ -329,7 +342,7 @@ class module(osv.osv): :returns: next res.config item to execute :rtype: dict[str, object] """ - self.state_update(cr, uid, ids, 'to install', ['uninstalled'], context) + self.button_install(cr, uid, ids, context=context) cr.commit() db, pool = pooler.restart_pool(cr.dbname, update_module=True)