summaryrefslogtreecommitdiff
path: root/odoo/fields.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2019-05-31 13:48:21 +0000
committerRaphael Collet <rco@odoo.com>2019-06-13 14:39:13 +0000
commitfb04afb15dd81479014b3ef3a8ded0d65775937d (patch)
treeadd10fd6bc743a238894989f9786a838c2a95a4b /odoo/fields.py
parente0e9ae1edd829c9caa6138728ba678a7f8b2dd18 (diff)
[FIX] fields: avoid infinite recursion in convert_to_write
Diffstat (limited to 'odoo/fields.py')
-rw-r--r--odoo/fields.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/odoo/fields.py b/odoo/fields.py
index cde78d4b180..2745a6e556d 100644
--- a/odoo/fields.py
+++ b/odoo/fields.py
@@ -2360,6 +2360,7 @@ class _RelationalMulti(_Relational):
return value.ids
def convert_to_write(self, value, record):
+ inv_names = {field.name for field in record._field_inverses[self]}
# make result with new and existing records
result = [(6, 0, [])]
for record in value:
@@ -2368,6 +2369,7 @@ class _RelationalMulti(_Relational):
values = record._convert_to_write({
name: record[name]
for name in record._cache
+ if name not in inv_names
})
result.append((0, 0, values))
else:
@@ -2376,7 +2378,7 @@ class _RelationalMulti(_Relational):
values = record._convert_to_write({
name: record[name]
for name in record._cache
- if record[name] != origin[name]
+ if name not in inv_names and record[name] != origin[name]
})
if values:
result.append((1, origin.id, values))