From d5ac2f7ab7db6541541325f4cdf850846e549b7a Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 29 Sep 2015 15:18:18 +0200 Subject: [PATCH] [FIX] ir_actions: in overridden method `exists`, mark missing records in cache --- openerp/addons/base/ir/ir_actions.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index ae864148a8c..9cd79b8b3a2 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -22,7 +22,7 @@ from openerp.tools import ormcache from openerp.tools.safe_eval import safe_eval as eval from openerp.tools.translate import _ import openerp.workflow -from openerp.exceptions import UserError +from openerp.exceptions import MissingError, UserError _logger = logging.getLogger(__name__) @@ -401,7 +401,12 @@ class ir_actions_act_window(osv.osv): @openerp.api.multi def exists(self): ids = self._existing() - return self.filtered(lambda rec: rec.id in ids) + existing = self.filtered(lambda rec: rec.id in ids) + if len(existing) < len(self): + # mark missing records in cache with a failed value + exc = MissingError(_("Record does not exist or has been deleted.")) + (self - existing)._cache.update(openerp.fields.FailedValue(exc)) + return existing @openerp.api.model @ormcache()