summaryrefslogtreecommitdiff
path: root/bin/addons/base/module/module.py
diff options
context:
space:
mode:
Diffstat (limited to 'bin/addons/base/module/module.py')
-rw-r--r--bin/addons/base/module/module.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py
index f64c5503991..de1c6546e52 100644
--- a/bin/addons/base/module/module.py
+++ b/bin/addons/base/module/module.py
@@ -267,6 +267,23 @@ class module(osv.osv):
_('You try to remove a module that is installed or will be installed'))
return super(module, self).unlink(cr, uid, ids, context=context)
+ def state_change(self, cr, uid, ids, newstate, context={}, level=50):
+ if level<1:
+ raise Exception, _('Recursion error in modules dependencies !')
+ demo = True
+ for module in self.browse(cr, uid, ids):
+ mdemo = True
+ for dep in module.dependencies_id:
+ ids2 = self.search(cr, uid, [('name','=',dep.name)])
+ mdemo = self.state_change(cr, uid, ids2, newstate, context, level-1,)\
+ and mdemo
+ if not module.dependencies_id:
+ mdemo = module.demo
+ if module.state == 'uninstalled':
+ self.write(cr, uid, [module.id], {'state': newstate, 'demo':mdemo})
+ demo = demo and mdemo
+ return demo
+
def state_update(self, cr, uid, ids, newstate, states_to_update, context={}, level=50):
if level<1:
raise orm.except_orm(_('Error'), _('Recursion error in modules dependencies !'))