[IMP] models: prefetch fields with groups (those to which user has access)
authorRaphael Collet <rco@openerp.com>
Mon, 1 Sep 2014 09:43:33 +0000 (11:43 +0200)
committerRaphael Collet <rco@openerp.com>
Tue, 2 Sep 2014 12:11:11 +0000 (14:11 +0200)
openerp/models.py
openerp/osv/fields.py

index eaf643e..909de45 100644 (file)
@@ -3156,7 +3156,9 @@ class BaseModel(object):
             # here we can optimize: prefetch all classic and many2one fields
             fnames = set(fname
                 for fname, fcolumn in self._columns.iteritems()
-                if fcolumn._prefetch)
+                if fcolumn._prefetch
+                if not fcolumn.groups or self.user_has_groups(fcolumn.groups)
+            )
 
         # fetch records with read()
         assert self in records and field.name in fnames
index f27b737..f11ef97 100644 (file)
@@ -120,7 +120,7 @@ class _column(object):
 
         # prefetch only if self._classic_write, not self.groups, and not
         # self.deprecated
-        if not self._classic_write or self.groups or self.deprecated:
+        if not self._classic_write or self.deprecated:
             self._prefetch = False
 
     def to_field(self):