diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index 089eefbb6a0..4bb279f3beb 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -878,11 +878,18 @@ class ir_model_data(osv.osv): id = False return id + def clear_caches(self): + """ Clears all orm caches on the object's methods + + :returns: itself + """ + self._get_id.clear_cache(self) + self.get_object_reference.clear_cache(self) + return self def unlink(self, cr, uid, ids, context=None): """ Regular unlink method, but make sure to clear the caches. """ - self._get_id.clear_cache(self) - self.get_object_reference.clear_cache(self) + self.clear_caches() return super(ir_model_data,self).unlink(cr, uid, ids, context=context) def _update(self,cr, uid, model, module, values, xml_id=False, store=True, noupdate=False, mode='init', res_id=False, context=None): diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index ae0eb0f8bff..e7ad9cad65c 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1325,7 +1325,8 @@ class BaseModel(object): messages = [] fields = map(fix_import_export_id_paths, fields) - ModelData = self.pool['ir.model.data'] + ModelData = self.pool['ir.model.data'].clear_caches() + fg = self.fields_get(cr, uid, context=context) mode = 'init'