diff options
| author | Thibault Delavallée <tde@openerp.com> | 2014-06-16 10:08:36 +0200 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2014-06-16 10:08:36 +0200 |
| commit | 8dc02ebb6f31b5a55e4efa5fa58d57f39fb86102 (patch) | |
| tree | f78e6de9fe786a7348243be9d2bef139ebd48d0c | |
| parent | 47647c6c49fdada99add030de816792e7d442df0 (diff) | |
| parent | f7fe753d074160e6c21cc5b26f0d21bafb07db82 (diff) | |
Merge pull request #90 from odoo-dev/master-uninstall-module-tpa
[FIX] issues when uninstalling modules: unlink ir.action.todo which are related to actions which will be deleted (fix issues when uninstalling modules) + check for menu existence before displaying need action
| -rw-r--r-- | openerp/addons/base/ir/ir_actions.py | 7 | ||||
| -rw-r--r-- | openerp/addons/base/ir/ir_ui_menu.py | 10 |
2 files changed, 14 insertions, 3 deletions
diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index e9de9dc7028..c41eae84ff8 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -58,6 +58,13 @@ class actions(osv.osv): 'usage': lambda *a: False, } + def unlink(self, cr, uid, ids, context=None): + """unlink ir.action.todo which are related to actions which will be deleted. + NOTE: ondelete cascade will not work on ir.actions.actions so we will need to do it manually.""" + todo_obj = self.pool.get('ir.actions.todo') + todo_ids = todo_obj.search(cr, uid, [('action_id', 'in', ids)], context=context) + todo_obj.unlink(cr, uid, todo_ids, context=context) + return super(actions, self).unlink(cr, uid, ids, context=context) class ir_actions_report_xml(osv.osv): diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index f01ce54bfc2..957e0903013 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -312,9 +312,13 @@ class ir_ui_menu(osv.osv): menu_ref = [menu_ref] model_data_obj = self.pool.get('ir.model.data') for menu_data in menu_ref: - model, id = model_data_obj.get_object_reference(cr, uid, menu_data.split('.')[0], menu_data.split('.')[1]) - if (model == 'ir.ui.menu'): - menu_ids.add(id) + try: + model, id = model_data_obj.get_object_reference(cr, uid, menu_data.split('.')[0], menu_data.split('.')[1]) + if (model == 'ir.ui.menu'): + menu_ids.add(id) + except Exception: + pass + menu_ids = list(menu_ids) for menu in self.browse(cr, uid, menu_ids, context=context): |
