From 26bf8ca88065a898b0611033ec8bc5c066d58543 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 4 Jun 2019 12:48:05 +0000 Subject: [PATCH] [FIX] fields: x2many value overrides default value on new records When instantiating a new record, the commands of an x2many field apply on an empty recordset instead of the field's default value. This is less bug-prone, and avoids an infinite recursion in `convert_to_cache`. --- odoo/addons/test_new_api/tests/test_new_fields.py | 4 ++-- odoo/fields.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py index 10edaa907f4..492255df83e 100644 --- a/odoo/addons/test_new_api/tests/test_new_fields.py +++ b/odoo/addons/test_new_api/tests/test_new_fields.py @@ -958,9 +958,9 @@ class TestFields(common.TransactionCase): # no value gives the default value new_disc = discussion.new({'name': "Foo"}) self.assertEqual(new_disc.categories._origin, cat1) - # value is combined with default value + # value overrides default value new_disc = discussion.new({'name': "Foo", 'categories': [(4, cat2.id)]}) - self.assertEqual(new_disc.categories._origin, cat1 + cat2) + self.assertEqual(new_disc.categories._origin, cat2) def test_40_new_fields(self): """ Test new records with relational fields. """ diff --git a/odoo/fields.py b/odoo/fields.py index 87718a00da0..033aa713ae6 100644 --- a/odoo/fields.py +++ b/odoo/fields.py @@ -2321,7 +2321,7 @@ class _RelationalMulti(_Relational): else: browse = comodel.browse # determine the value ids - ids = OrderedSet(record[self.name]._ids) + ids = OrderedSet(record[self.name]._ids if validate else ()) # modify ids with the commands for command in value: if isinstance(command, (tuple, list)):