diff options
Diffstat (limited to 'bin/addons/base/module/module.py')
| -rw-r--r-- | bin/addons/base/module/module.py | 17 |
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 !')) |
