[MERGE] trunk-application_setting_cleanup-atp (let config wizards deinstall modules)

bzr revid: rco@openerp.com-20120625142153-jzpic4detyauc0z9
This commit is contained in:
Raphael Collet
2012-06-25 16:21:53 +02:00
+10 -14
View File
@@ -496,15 +496,6 @@ class res_config_settings(osv.osv_memory):
return res
def fields_get(self, cr, uid, allfields=None, context=None, write_access=True):
# overridden to make fields of installed modules readonly
res = super(res_config_settings, self).fields_get(cr, uid, allfields, context, write_access)
classified = self._get_classified_fields(cr, uid, context)
for name, module in classified['module']:
if name in res and module.state in ('installed', 'to install', 'to upgrade'):
res[name]['readonly'] = True
return res
def execute(self, cr, uid, ids, context=None):
ir_values = self.pool.get('ir.values')
ir_model_data = self.pool.get('ir.model.data')
@@ -531,13 +522,18 @@ class res_config_settings(osv.osv_memory):
if method.startswith('set_'):
getattr(self, method)(cr, uid, ids, context)
# module fields: install immediately the selected modules
# module fields: install/uninstall the selected modules
to_install_ids = []
to_uninstall_ids = []
for name, module in classified['module']:
if config[name] and module.state == 'uninstalled':
to_install_ids.append(module.id)
if to_install_ids:
ir_module.button_immediate_install(cr, uid, to_install_ids, context)
if config[name]:
if module.state == 'uninstalled': to_install_ids.append(module.id)
else:
if module.state in ('installed','upgrade'): to_uninstall_ids.append(module.id)
if to_install_ids or to_uninstall_ids:
ir_module.button_uninstall(cr, uid, to_uninstall_ids, context=context)
ir_module.button_immediate_install(cr, uid, to_install_ids, context=context)
# force client-side reload (update user menu and current view)
return {