diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-03-03 15:50:53 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-03-25 17:36:02 +0000 |
| commit | a1654e59b9a0f07dc659b790171bae2500bd1adc (patch) | |
| tree | a3ead48b798338912069571843b78f43ecc02ed1 /odoo/addons/test_new_api/tests/test_new_fields.py | |
| parent | 3efffa8a556d20001e232661e218bdda2c05f1c5 (diff) | |
[FIX] core: computed fields can be copied if editable
Purpose of this commit is to let computed stored editable fields being
copied if their field class allows it.
Indeed the value of those fields is computed based on some triggers but
can also be updated manually by users. When copying a record, it makes
sense to consider that this value is what the user expects and allow its
copy, if the original field allows it. Either it was computed, and
copied value will be correct without having to call computation again
(well, provided all dependencies have been copied, too), or it was
updated and the copied value will be the one the user entered.
Without this fix, an edited field is not copied, and will be recomputed,
which may look like an inconsistent value.
Task ID 2209163
closes odoo/odoo#48383
X-original-commit: 4b274d3b4101fbae154a572cdf40d23838899773
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Co-authored-by: Raphael Collet <rco@odoo.com>
Diffstat (limited to 'odoo/addons/test_new_api/tests/test_new_fields.py')
| -rw-r--r-- | odoo/addons/test_new_api/tests/test_new_fields.py | 23 |
1 files changed, 22 insertions, 1 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 8fee8359658..55f0d59ea04 100644 --- a/odoo/addons/test_new_api/tests/test_new_fields.py +++ b/odoo/addons/test_new_api/tests/test_new_fields.py @@ -110,16 +110,37 @@ class TestFields(TransactionCaseWithUserDemo): def test_10_computed(self): """ check definition of computed fields """ - # by default function fields are not stored and readonly + # by default function fields are not stored, readonly, not copied field = self.env['test_new_api.message']._fields['size'] self.assertFalse(field.store) self.assertFalse(field.compute_sudo) self.assertTrue(field.readonly) + self.assertFalse(field.copy) field = self.env['test_new_api.message']._fields['name'] self.assertTrue(field.store) self.assertTrue(field.compute_sudo) self.assertTrue(field.readonly) + self.assertFalse(field.copy) + + # stored editable computed fields are copied according to their type + field = self.env['test_new_api.compute.onchange']._fields['baz'] + self.assertTrue(field.store) + self.assertTrue(field.compute_sudo) + self.assertFalse(field.readonly) + self.assertTrue(field.copy) + + field = self.env['test_new_api.compute.onchange']._fields['line_ids'] + self.assertTrue(field.store) + self.assertTrue(field.compute_sudo) + self.assertFalse(field.readonly) + self.assertFalse(field.copy) # like a regular one2many field + + field = self.env['test_new_api.compute.onchange']._fields['tag_ids'] + self.assertTrue(field.store) + self.assertTrue(field.compute_sudo) + self.assertFalse(field.readonly) + self.assertTrue(field.copy) # like a regular many2many field def test_10_computed_custom(self): """ check definition of custom computed fields """ |
