From aa10972d13eeb2414bcfb0a0c402ef49573e1756 Mon Sep 17 00:00:00 2001
From: Sandy Carter <sandy.carter@savoirfairelinux.com>
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 <sandy.carter@savoirfairelinux.com>

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 dc949db16ad9..7f064a401a8d 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):
-- 
GitLab