changeset ed013c8c65fe in trytond:default details: https://hg.tryton.org/trytond?cmd=changeset;node=ed013c8c65fe description: Include recursively the depends of the depends into the view
The value of a field, added to the view because it is a depends, may not be correctly computed if it is missing its own depends. issue9828 review292751003 diffstat: trytond/model/modelview.py | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) diffs (31 lines): diff -r 146546176751 -r ed013c8c65fe trytond/model/modelview.py --- a/trytond/model/modelview.py Mon Nov 23 17:55:20 2020 +0100 +++ b/trytond/model/modelview.py Mon Nov 23 23:33:59 2020 +0100 @@ -502,17 +502,21 @@ if hasattr(field, 'field'): fields_def.setdefault(field.field, {'name': field.field}) - for field_name in list(fields_def.keys()): + for depend in view_depends: + if depend not in fields_to_remove: + fields_def.setdefault(depend, {'name': depend}) + + field_names = list(fields_def.keys()) + while field_names: + field_name = field_names.pop() if field_name in cls._fields: field = cls._fields[field_name] else: continue for depend in field.depends: - fields_def.setdefault(depend, {'name': depend}) - - for depend in view_depends: - if depend not in fields_to_remove: - fields_def.setdefault(depend, {'name': depend}) + if depend not in fields_def: + fields_def[depend] = {'name': depend} + field_names.append(depend) arch = etree.tostring( tree, encoding='utf-8', pretty_print=False).decode('utf-8')