Reloading multiple records in a editable tree results in a RecursionError
When reloading a selection of records on an editable list a RecursionError
occurs. It's due to the fact that the selection changes and we're entering a loop of reloading a destroyed record.
ERROR:tryton.common.common: File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/view/list.py", line 1065, in __select_changed
if not previous_record.validate(self.get_fields()):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 405, in validate
self._check_load(fields)
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 266, in _check_load
self.reload(fields)
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 518, in reload
self.validate(fields or [])
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 405, in validate
self._check_load(fields)
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 266, in _check_load
self.reload(fields)
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 518, in reload
self.validate(fields or [])
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 405, in validate
self._check_load(fields)
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 266, in _check_load
self.reload(fields)
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 518, in reload
self.validate(fields or [])
....
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 405, in validate
self._check_load(fields)
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 265, in _check_load
if not self.get_loaded(fields):
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nicoe/projets/tryton/tryton/tryton/tryton/gui/window/view_form/model/record.py", line 276, in get_loaded
return set(fields) <= (self._loaded | set(self.modified_fields))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded in comparison
Edited by Nicolas Évrard