diff options
| author | Stephane Wirtel <stw@openerp.com> | 2011-09-30 13:51:44 +0200 |
|---|---|---|
| committer | Stephane Wirtel <stw@openerp.com> | 2011-09-30 13:51:44 +0200 |
| commit | cb13a76208ed763e1ada4cb868ba8fee7fea147d (patch) | |
| tree | f27ce0d9960f2e233d0fe3541ac028d66d1b1d19 /addons/base_setup | |
| parent | 4705ae93522982f4805bfaf49e253e6c7ffbe906 (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')
| -rw-r--r-- | addons/base_setup/base_setup.py | 18 |
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): |
