changeset 8d9fe8efe6ec in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=8d9fe8efe6ec
description:
        Take the field type from the right definition

        The field type should be taken from the current fields definition and 
not from
        the class.

        issue8212
        review273131002
diffstat:

 trytond/model/modelstorage.py |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (26 lines):

diff -r fac8fda20028 -r 8d9fe8efe6ec trytond/model/modelstorage.py
--- a/trytond/model/modelstorage.py     Fri Mar 22 18:18:36 2019 +0100
+++ b/trytond/model/modelstorage.py     Fri Mar 22 18:25:52 2019 +0100
@@ -759,11 +759,10 @@
             return res
 
         @memoize(1000)
-        def get_by_id(value, field):
+        def get_by_id(value, field, ftype):
             if not value:
                 return None
             relation = None
-            ftype = fields_def[field[-1][:-3]]['type']
             if ftype == 'many2many':
                 value = next(csv.reader(value.splitlines(), delimiter=',',
                         quoting=csv.QUOTE_NONE, escapechar='\\'))
@@ -810,7 +809,8 @@
                 is_prefix_len = (len(field) == (prefix_len + 1))
                 value = line[i]
                 if is_prefix_len and field[-1].endswith(':id'):
-                    row[field[0][:-3]] = get_by_id(value, field)
+                    ftype = fields_def[field[-1][:-3]]['type']
+                    row[field[0][:-3]] = get_by_id(value, field, ftype)
                 elif is_prefix_len and ':lang=' in field[-1]:
                     field_name, lang = field[-1].split(':lang=')
                     translate.setdefault(lang, {})[field_name] = value or False

Reply via email to