From ddbde7cdaf0d34eb5af9272838fa63d483bfac7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 24 Sep 2015 22:51:13 +0200 Subject: [PATCH] Correctly set xxx2many modified by on_change set_on_change should not trigger any signal but it should register the field as modified. issue4968 review20391002 --- tryton/gui/window/view_form/model/field.py | 10 +--------- tryton/gui/window/view_form/model/record.py | 12 ------------ 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py index ce713be0cf..d4b76d7aab 100644 --- a/tryton/gui/window/view_form/model/field.py +++ b/tryton/gui/window/view_form/model/field.py @@ -454,11 +454,6 @@ class O2MField(Field): def __init__(self, attrs): super(O2MField, self).__init__(attrs) - self.in_on_change = False - - def sig_changed(self, record): - if not self.in_on_change: - return super(O2MField, self).sig_changed(record) def _group_changed(self, group, record): if not record.parent: @@ -661,11 +656,10 @@ class O2MField(Field): record.modified_fields.setdefault(self.name) def set_on_change(self, record, value): + record.modified_fields.setdefault(self.name) self._set_default_value(record) if isinstance(value, (list, tuple)): self._set_value(record, value) - record.modified_fields.setdefault(self.name) - record.signal('record-modified') return if value and (value.get('add') or value.get('update')): @@ -703,8 +697,6 @@ class O2MField(Field): new_record = record.value[self.name].new(default=False) record.value[self.name].add(new_record, index, signal=False) new_record.set_on_change(vals) - if value.get('add'): - record.value[self.name].signal('group-changed', new_record) for vals in value.get('update', []): if 'id' not in vals: diff --git a/tryton/gui/window/view_form/model/record.py b/tryton/gui/window/view_form/model/record.py index 0a6fcd52b8..3650b06a11 100644 --- a/tryton/gui/window/view_form/model/record.py +++ b/tryton/gui/window/view_form/model/record.py @@ -461,13 +461,9 @@ class Record(SignalEvent): self.signal('record-changed') def set_on_change(self, values): - later = {} for fieldname, value in values.items(): if fieldname not in self.group.fields: continue - if isinstance(self.group.fields[fieldname], fields.O2MField): - later[fieldname] = value - continue if isinstance(self.group.fields[fieldname], (fields.M2OField, fields.ReferenceField)): field_rec_name = fieldname + '.rec_name' @@ -476,14 +472,6 @@ class Record(SignalEvent): elif field_rec_name in self.value: del self.value[field_rec_name] self.group.fields[fieldname].set_on_change(self, value) - for fieldname, value in later.items(): - # on change recursion checking is done only for x2many - field_x2many = self.group.fields[fieldname] - try: - field_x2many.in_on_change = True - field_x2many.set_on_change(self, value) - finally: - field_x2many.in_on_change = False def reload(self, fields=None): if self.id < 0: