From 8ac6e7129781d568b7e57af2e041a2b6a08a28ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 5 Dec 2023 12:33:33 +0100 Subject: [PATCH] Always pass the field name to convert value from getter of Function field Closes #12802 (grafted from 90893adeec8f5866375bae97084ee00080d8aeb3) --HG-- branch : 7.0 --- trytond/trytond/model/fields/function.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/trytond/trytond/model/fields/function.py b/trytond/trytond/model/fields/function.py index 47ecaf8cc0..4618c54efc 100644 --- a/trytond/trytond/model/fields/function.py +++ b/trytond/trytond/model/fields/function.py @@ -126,18 +126,15 @@ class Function(Field): if not instance_method: values = method(records, name) if isinstance(name, str): - return convert_dict(values) + return convert_dict(values, name) else: return {n: convert_dict(values[n], n) for n in name} else: - return {r.id: convert(method(r, name)) for r in records} + return {r.id: convert(method(r, name), name) for r in records} - def convert(value, name=None): + def convert(value, name): from ..model import Model as BaseModel - if name: - field = Model._fields[name]._field - else: - field = self._field + field = Model._fields[name]._field if field._type in {'many2one', 'one2one', 'reference'}: if isinstance(value, BaseModel): if field._type == 'reference': @@ -149,7 +146,7 @@ class Function(Field): value = [int(r) for r in value] return value - def convert_dict(values, name=None): + def convert_dict(values, name): # Keep the same class values = values.copy() values.update((k, convert(v, name)) for k, v in values.items())