summaryrefslogtreecommitdiff
path: root/addons/base_setup/base_setup.py
diff options
context:
space:
mode:
authorStephane Wirtel <stw@openerp.com>2011-09-30 13:51:44 +0200
committerStephane Wirtel <stw@openerp.com>2011-09-30 13:51:44 +0200
commitcb13a76208ed763e1ada4cb868ba8fee7fea147d (patch)
treef27ce0d9960f2e233d0fe3541ac028d66d1b1d19 /addons/base_setup/base_setup.py
parent4705ae93522982f4805bfaf49e253e6c7ffbe906 (diff)
[FIX] base_setup: the web client can't parse the literal value in the
on_change event. We use a workaround to bypass this kind of problem. bzr revid: stw@openerp.com-20110930115144-nwog9ac6a5dzv1xj
Diffstat (limited to 'addons/base_setup/base_setup.py')
-rw-r--r--addons/base_setup/base_setup.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/addons/base_setup/base_setup.py b/addons/base_setup/base_setup.py
index fc5fa1f2603..42fae345959 100644
--- a/addons/base_setup/base_setup.py
+++ b/addons/base_setup/base_setup.py
@@ -113,7 +113,7 @@ class base_setup_installer2(osv.osv_memory):
attributes = {
'name' : 'category_%d' % (module_category.id,),
- 'on_change' : 'on_change_selection("category_%d")' % (module_category.id,),
+ 'on_change' : 'on_change_%s_%d(category_%d)' % ('category', module_category.id, module_category.id,),
}
if readonly:
attributes['modifiers'] = simplejson.dumps({'readonly' : True})
@@ -151,8 +151,17 @@ class base_setup_installer2(osv.osv_memory):
return result
- def on_change_selection(self, cr, uid, ids, item, context=None):
- if not isinstance(item, basestring):
+ def __getattr__(self, name):
+ if name.startswith('on_change_category_'):
+ def proxy(cr, uid, ids, value, context=None):
+ item = 'category_%s' % name[len('on_change_category_'):]
+ return self._on_change_selection(cr, uid, ids, item, value, context=context)
+ return proxy
+ return getattr(super(base_setup_installer2, self), name)
+
+ def _on_change_selection(self, cr, uid, ids, item, value, context=None):
+ print "on_change_selection: %r" % (item,)
+ if not isinstance(item, basestring) or not value:
return {}
if item.startswith('category_') or item.startswith('module_'):
@@ -208,6 +217,7 @@ class base_setup_installer2(osv.osv_memory):
info['counter'] = - len(set(info['depends']))
selected_modules = set(selected_modules + installed_modules) - set(['base'])
+ print "selected_modules: %r" % (selected_modules,)
for selected_module in selected_modules:
for module, info in modules.iteritems():
@@ -220,6 +230,8 @@ class base_setup_installer2(osv.osv_memory):
if info['counter'] == 0 and
info['state'] not in STATES)
+ print "to_install_modules: %r" % (to_install_modules,)
+
return to_install_modules
def apply_cb(self, cr, uid, ids, context=None):