changeset cb33acf83d2a in trytond:5.6
details: https://hg.tryton.org/trytond?cmd=changeset;node=cb33acf83d2a
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
(grafted from ed013c8c65fe3af1ce8ed6810562a80567d8a7f4)
diffstat:
trytond/model/modelview.py | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)
diffs (31 lines):
diff -r ed41633a797c -r cb33acf83d2a trytond/model/modelview.py
--- a/trytond/model/modelview.py Wed Nov 11 15:50:49 2020 +0100
+++ b/trytond/model/modelview.py Mon Nov 23 23:33:59 2020 +0100
@@ -493,17 +493,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')