Fix on_change set for xxx2many fields

- Always mark record as changed
- Skip fields with dot

review321001
This commit is contained in:
Cédric Krier committed 2012-04-11 13:04:07 +02:00
1 parent 682a7023ab
commit 600bc0c8fc
1 file changed
+7 -6
+7 -6
View File
@@ -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'