Fix on_change set for xxx2many fields
- Always mark record as changed - Skip fields with dot review321001
This commit is contained in:
1 parent
682a7023ab
commit
600bc0c8fc
1 file changed
+7
-6
+7
-6
@@ -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'
|
||||
|
||||
Reference in new issue
Block a user