From aa10972d13eeb2414bcfb0a0c402ef49573e1756 Mon Sep 17 00:00:00 2001 From: Sandy Carter Date: Tue, 18 Nov 2014 09:33:47 -0500 Subject: [PATCH] Raise error on read of a browse object with bad id Check if id is valid by searching record columns when a key error is raised If the record has the column, the key error is actually an error on a missing or inaccessible id. Signed-off-by: Sandy Carter Closes #3658 --- openerp/osv/orm.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index dc949db16ad..7f064a401a8 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -501,7 +501,17 @@ class browse_record(object): def __getattr__(self, name): try: return self[name] - except KeyError, e: + except KeyError as e: + if name in self._all_columns: + raise ValueError( + 'Cannot fetch field "%(field)s" for "%(model)s" record ' + 'with ID %(id)s, that record does not exist or has been ' + 'deleted' % { + 'field': name, + 'model': self._model._name, + 'id': self._id, + } + ) raise AttributeError(e) def __contains__(self, name):