Reviewers: ,
Please review this at http://codereview.tryton.org/125003/
Affected files:
M trytond/model/modelview.py
Index: trytond/model/modelview.py
===================================================================
--- a/trytond/model/modelview.py
+++ b/trytond/model/modelview.py
@@ -263,6 +263,7 @@
def _view_look_dom_arch(self, tree, type, field_children=None):
pool = Pool()
+ model_access_obj = pool.get('ir.model.access')
field_access_obj = pool.get('ir.model.field.access')
fields_width = {}
@@ -273,6 +274,26 @@
self._columns.keys(), 'read', access=True)
fields_to_remove = list(x for x, y in fread_accesses.iteritems()
if not y)
+
+ def check_relation(field):
+ if field._type in ('one2many', 'many2one'):
+ if not model_access_obj.check(field.model_name,
mode='read',
+ raise_exception=False):
+ return False
+ if field._type in ('many2many', 'one2one'):
+ if not model_access_obj.check(field.target, mode='read',
+ raise_exception=False):
+ return False
+ elif not model_access_obj.check(field.relation_name,
+ mode='read', raise_exception=False):
+ return False
+ return True
+
+ # Find relation field without read access
+ for name, field in self._columns.iteritems():
+ if not check_relation(field):
+ fields_to_remove.append(name)
+
for name, field in self._columns.iteritems():
for field_to_remove in fields_to_remove:
if field_to_remove in field.depends:
@@ -285,6 +306,12 @@
inherit_obj._columns.keys(), 'read', access=True)
fields_to_remove += list(x for x, y in
fread_accesses.iteritems()
if not y and x not in self._columns.keys())
+
+ # Find relation field without read access
+ for name, field in inherit_obj._columns.iteritems():
+ if not check_relation(field):
+ fields_to_remove.append(name)
+
for name, field in inherit_obj._columns.iteritems():
for field_to_remove in fields_to_remove:
if field_to_remove in field.depends:
--
[email protected] mailing list