changeset 259af7dae8ce in tryton:5.6
details: https://hg.tryton.org/tryton?cmd=changeset;node=259af7dae8ce
description:
Do not rely on current record from screen
If the current record is removed, the attribute is set to None by
cancel_current.
issue9298
review314651002
(grafted from 0110eb3f3ddde9e70c2e611c55bed79081e988cb)
diffstat:
tryton/gui/window/win_form.py | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diffs (27 lines):
diff -r 093ffe5b68d7 -r 259af7dae8ce tryton/gui/window/win_form.py
--- a/tryton/gui/window/win_form.py Sat Oct 24 13:14:55 2020 +0200
+++ b/tryton/gui/window/win_form.py Wed Oct 28 00:02:52 2020 +0100
@@ -399,16 +399,17 @@
if (self.screen.current_record
and not readonly
and response_id in cancel_responses):
- added = 'id' in self.screen.current_record.modified_fields
+ record = self.screen.current_record
+ added = 'id' in record.modified_fields
if (self.screen.current_record.id < 0
or self.save_current):
self.screen.cancel_current(self._initial_value)
- elif self.screen.current_record.modified:
- self.screen.current_record.cancel()
- self.screen.current_record.reload()
- self.screen.current_record.signal('record-changed')
+ elif record.modified:
+ record.cancel()
+ record.reload()
+ record.signal('record-changed')
if added:
- self.screen.current_record.modified_fields.setdefault('id')
+ record.modified_fields.setdefault('id')
result = False
else:
result = response_id not in cancel_responses