summaryrefslogtreecommitdiff
path: root/bin/addons/base/module
diff options
context:
space:
mode:
authorpinky <>2006-12-14 15:16:54 +0000
committerpinky <>2006-12-14 15:16:54 +0000
commit5b327ad4e2df0a81029288af37eea6211e7c68f5 (patch)
treebb9d2baa15b1a40451b7d837ca5c33754d828ad8 /bin/addons/base/module
parent3ef65d7f9313137558622e105f44cac3cd3dbd15 (diff)
Bugfix in demo data selection
bzr revid: pinky-8a338062358ee70493a751807ea0c2905eb4da2f
Diffstat (limited to 'bin/addons/base/module')
-rw-r--r--bin/addons/base/module/module.py28
1 files changed, 9 insertions, 19 deletions
diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py
index bc9aefc0a32..71ea8f3baab 100644
--- a/bin/addons/base/module/module.py
+++ b/bin/addons/base/module/module.py
@@ -114,33 +114,23 @@ class module(osv.osv):
def state_change(self, cr, uid, ids, newstate, context={}, level=50):
if level<1:
raise 'Recursion error in modules dependencies !'
- ids_dest = []
+ 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)])
- for id in ids2:
- if (id not in ids_dest):
- ids_dest.append(id)
- if module.state=='uninstalled':
- self.write(cr, uid, [module.id], {'state': newstate})
- if ids_dest:
- self.state_change(cr, uid, ids_dest, newstate, context, level-1)
-
- for module in self.browse(cr, uid, ids):
- if module.state!='installed':
- demo=True
- for dep in module.dependencies_id:
- ids2 = self.search(cr, uid, [('name', '=', dep.name)])
- for module2 in self.browse(cr, uid, ids2):
- demo = demo and module2.demo
- self.write(cr, uid, [module.id], {'demo':demo})
- return True
+ mdemo = mdemo and self.state_change(cr, uid, ids2, newstate, context, level-1)
+ if not module.dependencies_id:
+ mdemo = module.demo
+ self.write(cr, uid, [module.id], {'state': newstate, 'demo':mdemo})
+ demo = demo and mdemo
+ return demo
def button_install(self, cr, uid, ids, context={}):
return self.state_change(cr, uid, ids, 'to install', context)
def button_install_cancel(self, cr, uid, ids, context={}):
- self.write(cr, uid, ids, {'state': 'uninstalled'})
+ self.write(cr, uid, ids, {'state': 'uninstalled', 'demo':False})
return True
def button_uninstall(self, cr, uid, ids, context={}):