From 600bc0c8fca6ea291c3aeaa3ebd3c3b71e94861a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 11 Apr 2012 13:04:07 +0200 Subject: [PATCH] Fix on_change set for xxx2many fields - Always mark record as changed - Skip fields with dot review321001 --- proteus/__init__.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 9cc37c4924..4b7b065aeb 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -720,11 +720,8 @@ class Model(object): return res def _on_change_set(self, field, value): - if self._fields[field]['type'] in ('one2many', 'many2many'): - if isinstance(value, (list, tuple)): - self._values[field] = value - self._changed.add(field) - return + if (self._fields[field]['type'] in ('one2many', 'many2many') + and not isinstance(value, (list, tuple))): to_remove = [] if value and value.get('remove'): for record_id in value['remove']: @@ -740,6 +737,8 @@ class Model(object): self._config) record = relation() for i, j in vals.iteritems(): + if '.' in i: + continue record._values[i] = j record._changed.add(i) # append without signal @@ -750,11 +749,13 @@ class Model(object): for record in getattr(self, field): if record.id == vals['id']: for i, j in vals.iteritems(): + if '.' in i: + continue record._values[i] = j record._changed.add(i) else: self._values[field] = value - self._changed.add(field) + self._changed.add(field) def _on_change(self, name): 'Call on_change for field'