diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index e777b390aa8..05151ce2945 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -931,6 +931,9 @@ class ir_model_data(osv.osv): ir_model_relation = self.pool.get('ir.model.relation') relation_ids = ir_model_relation.search(cr, uid, [('module', 'in', modules_to_remove)]) + ir_module_module = self.pool.get('ir.module.module') + modules_to_remove_ids = ir_module_module.search(cr, uid, [('name', 'in', modules_to_remove)]) + relation_ids = ir_model_relation.search(cr, uid, [('module', 'in', modules_to_remove_ids)]) ir_model_relation._module_data_uninstall(cr, uid, relation_ids, context) unlink_if_refcount((model, res_id) for model, res_id in to_unlink diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index d64a754c5a2..bdd9bcf2fb2 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -382,7 +382,8 @@ class module(osv.osv): ir_model_data = self.pool.get('ir.model.data') ir_model_constraint = self.pool.get('ir.model.constraint') modules_to_remove = [m.name for m in self.browse(cr, uid, ids, context)] - constraint_ids = ir_model_constraint.search(cr, uid, [('module', 'in', modules_to_remove)]) + modules_to_remove_ids = [m.id for m in self.browse(cr, uid, ids, context)] + constraint_ids = ir_model_constraint.search(cr, uid, [('module', 'in', modules_to_remove_ids)]) ir_model_constraint._module_data_uninstall(cr, uid, constraint_ids, context) ir_model_data._module_data_uninstall(cr, uid, modules_to_remove, context) self.write(cr, uid, ids, {'state': 'uninstalled'})