diff options
Diffstat (limited to 'bin/addons/base/module/module.py')
| -rw-r--r-- | bin/addons/base/module/module.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index 27f390a3bd1..323e032784f 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -591,10 +591,12 @@ class module(osv.osv): self.write(cr, uid, [id], {'category_id': p_id}) def action_install(self,cr,uid,ids,context=None): - self.write(cr , uid, ids ,{'state' : 'to install'}) - self.download(cr, uid, ids, context=context) - for id in ids: - cr.execute("select m.id as id from ir_module_module_dependency d inner join ir_module_module m on (m.name=d.name) where d.module_id=%d and m.state='uninstalled'",(id,)) + for module in self.browse(cr, uid, ids, context): + if module.state <> 'uninstalled': + continue + self.write(cr , uid, [module.id] ,{'state' : 'to install'}) + self.download(cr, uid, [module.id], context=context) + cr.execute("select m.id as id from ir_module_module_dependency d inner join ir_module_module m on (m.name=d.name) where d.module_id=%d and m.state='uninstalled'",(module.id,)) dep_ids = map(lambda x:x[0],cr.fetchall()) if len(dep_ids): self.action_install(cr,uid,dep_ids,context=context) |
