changeset 64b0febfc940 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=64b0febfc940
description:
        Do not prefetch view of xxx2many using multiselection widget

        The view is not required by the widget and it allows non ModelView 
relation to
        be used.

        issue8894
        review288631002
diffstat:

 trytond/model/modelview.py |  7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diffs (26 lines):

diff -r 7ab165ec4de9 -r 64b0febfc940 trytond/model/modelview.py
--- a/trytond/model/modelview.py        Mon Dec 16 17:31:15 2019 +0100
+++ b/trytond/model/modelview.py        Wed Dec 18 21:40:42 2019 +0100
@@ -540,10 +540,10 @@
             elif hasattr(field, 'get_target'):
                 return field.get_target().__name__
 
-        def get_views(relation, view_ids, mode):
+        def get_views(relation, widget, view_ids, mode):
             Relation = pool.get(relation)
             views = {}
-            if field._type in ['one2many', 'many2many']:
+            if widget in {'one2many', 'many2many'}:
                 # Prefetch only the first view to prevent infinite loop
                 if view_ids:
                     for view_id in view_ids:
@@ -576,7 +576,8 @@
                     continue
                 mode = (
                     element.attrib.pop('mode', None) or 'tree,form').split(',')
-                views = get_views(relation, view_ids, mode)
+                widget = element.attrib.get('widget', field._type)
+                views = get_views(relation, widget, view_ids, mode)
                 element.attrib['mode'] = ','.join(mode)
                 fields_attrs[fname].setdefault('views', {}).update(views)
 

Reply via email to