From 8b553fd6e98f57fadc1e5074fe93a775e082b586 Mon Sep 17 00:00:00 2001 From: "Dharti Ratani (OpenERP)" Date: Wed, 30 May 2012 15:42:04 +0530 Subject: [PATCH 1/7] [IMP]uninstalling module on uncheck from configuration wizard bzr revid: dhr@tinyerp.com-20120530101204-23et36teugo13ivb --- openerp/addons/base/res/res_config.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index f28b023eddd..a65bbecb677 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -502,7 +502,7 @@ class res_config_settings(osv.osv_memory): 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 + res[name]['readonly'] = False return res def execute(self, cr, uid, ids, context=None): @@ -534,10 +534,14 @@ class res_config_settings(osv.osv_memory): # module fields: install immediately the selected modules to_install_ids = [] for name, module in classified['module']: - if config[name] and module.state == 'uninstalled': - to_install_ids.append(module.id) + 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: ir_module.button_immediate_install(cr, uid, to_install_ids, context) + if to_uninstall_ids: + ir_module.module_uninstall(cr, uid, to_uninstall_ids, context) # force client-side reload (update user menu and current view) return { From 3a5c1cf4a3d194f10cda5fbea6fe1f62e12280e8 Mon Sep 17 00:00:00 2001 From: "Dharti Ratani (OpenERP)" Date: Wed, 30 May 2012 16:22:43 +0530 Subject: [PATCH 2/7] [IMP] bzr revid: dhr@tinyerp.com-20120530105243-zqu13jryqdxxzzfd --- openerp/addons/base/res/res_config.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index a65bbecb677..2bf27862ab9 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -500,9 +500,9 @@ class res_config_settings(osv.osv_memory): # 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'] = False + #for name, module in classified['module']: + # if name in res and module.state in ('installed', 'to install', 'to upgrade'): + # res[name]['readonly'] = False return res def execute(self, cr, uid, ids, context=None): @@ -533,6 +533,7 @@ class res_config_settings(osv.osv_memory): # module fields: install immediately the selected modules to_install_ids = [] + to_uninstall_ids = [] for name, module in classified['module']: if config[name]: if module.state == 'uninstalled': to_install_ids.append(module.id) From 5481df3693d919c79e306a1b1c0fc72752a7e67f Mon Sep 17 00:00:00 2001 From: Tejas Tank Date: Fri, 1 Jun 2012 19:16:15 +0530 Subject: [PATCH 3/7] test button_uninstall bzr revid: tta@openerp.com-20120601134615-zuh7ct4cgr3hn506 --- openerp/addons/base/ir/ir_ui_menu.py | 3 ++- openerp/addons/base/res/res_config.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index 15d250a7489..09029cedaef 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -261,7 +261,8 @@ class ir_ui_menu(osv.osv): res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = {} - if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model: + + if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model: menu_needaction_res = self.pool.get(menu.action.res_model)._get_needaction_info(cr, uid, uid, domain=menu.action.domain, context=context) else: menu_needaction_res = [False, 0] diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 2bf27862ab9..d2fb668fcf9 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -542,7 +542,7 @@ class res_config_settings(osv.osv_memory): if to_install_ids: ir_module.button_immediate_install(cr, uid, to_install_ids, context) if to_uninstall_ids: - ir_module.module_uninstall(cr, uid, to_uninstall_ids, context) + ir_module.button_uninstall(cr, uid, to_uninstall_ids, context) # force client-side reload (update user menu and current view) return { From 4e4c4016c1842a7224a922fc6b292d86827b0d6f Mon Sep 17 00:00:00 2001 From: Tejas Tank Date: Mon, 4 Jun 2012 11:33:00 +0530 Subject: [PATCH 4/7] Uninstall module bzr revid: tta@openerp.com-20120604060300-5knysiuvz63vzd6t --- openerp/addons/base/res/res_config.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index d2fb668fcf9..047d764b95a 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -542,7 +542,11 @@ class res_config_settings(osv.osv_memory): if to_install_ids: ir_module.button_immediate_install(cr, uid, to_install_ids, context) if to_uninstall_ids: - ir_module.button_uninstall(cr, uid, to_uninstall_ids, context) + # Module unInstallation. + ir_module.module_uninstall(cr, uid, to_uninstall_ids, context) + cr.commit() + _logger.info('Reloading registry once more after uninstalling modules') + pooler.restart_pool(cr.dbname, update_module=True) # force client-side reload (update user menu and current view) return { From 9ad050e178f29256dfd638d3eb61451ab0e1c623 Mon Sep 17 00:00:00 2001 From: Tejas Tank Date: Mon, 4 Jun 2012 15:16:12 +0530 Subject: [PATCH 5/7] inqure for downstream dependancies. bzr revid: tta@openerp.com-20120604094612-761xmk4krzfez4o3 --- openerp/addons/base/res/res_config.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 047d764b95a..95cab12ce32 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -543,7 +543,8 @@ class res_config_settings(osv.osv_memory): ir_module.button_immediate_install(cr, uid, to_install_ids, context) if to_uninstall_ids: # Module unInstallation. - ir_module.module_uninstall(cr, uid, to_uninstall_ids, context) + dep_ids = ir_module.downstream_dependencies(cr, uid, to_uninstall_ids, context=context) + ir_module.module_uninstall(cr, uid, to_uninstall_ids + dep_ids , context) cr.commit() _logger.info('Reloading registry once more after uninstalling modules') pooler.restart_pool(cr.dbname, update_module=True) From 3622715a31511caf0bca443a01171a97c37dd108 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Thu, 21 Jun 2012 17:13:24 +0200 Subject: [PATCH 6/7] [IMP] cancel dummy change bzr revid: rco@openerp.com-20120621151324-8fqy02lqbjz6dmr6 --- openerp/addons/base/ir/ir_ui_menu.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index 1bc32d85735..77c0c4d738a 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -264,8 +264,7 @@ class ir_ui_menu(osv.osv): res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = {} - - if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model: + if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model: menu_needaction_res = self.pool.get(menu.action.res_model)._get_needaction_info(cr, uid, uid, domain=menu.action.domain, context=context) else: menu_needaction_res = [False, 0] From ab231e2165ee4cbcd032cfcfa38034dda4eae0d7 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 22 Jun 2012 11:51:26 +0200 Subject: [PATCH 7/7] [IMP] res_config code cleanup bzr revid: rco@openerp.com-20120622095126-t7yvkf29dfjktqfq --- openerp/addons/base/res/res_config.py | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 95cab12ce32..e7f54c6966e 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -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'] = False - 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,23 +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]: 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: - ir_module.button_immediate_install(cr, uid, to_install_ids, context) - if to_uninstall_ids: - # Module unInstallation. - dep_ids = ir_module.downstream_dependencies(cr, uid, to_uninstall_ids, context=context) - ir_module.module_uninstall(cr, uid, to_uninstall_ids + dep_ids , context) - cr.commit() - _logger.info('Reloading registry once more after uninstalling modules') - pooler.restart_pool(cr.dbname, update_module=True) + 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 {