[IMP] unlink ir.action.todo which are related to actions which will be deleted.
authortpa-odoo <tpa@tinyerp.com>
Tue, 20 May 2014 11:30:15 +0000 (17:00 +0530)
committertpa-odoo <tpa@tinyerp.com>
Tue, 20 May 2014 11:30:15 +0000 (17:00 +0530)
openerp/addons/base/ir/ir_actions.py
openerp/addons/base/ir/ir_ui_menu.py

index 57f24c8..3fb42ac 100644 (file)
@@ -57,6 +57,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):
 
index f01ce54..957e090 100644 (file)
@@ -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):