diff options
| author | Denis Ledoux <dle@odoo.com> | 2020-11-12 12:35:39 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-11-19 11:11:41 +0000 |
| commit | 1fe9a5c886fcef34a5113fd77d74550c99a8a305 (patch) | |
| tree | 1579d947996fdbd3995f1ffaacedd8641d48c884 | |
| parent | b325266bc9d3893e037b3fd8d734ac7d3d510c41 (diff) | |
[FIX] registry: unit test for #60899
The field `display_name` is a magic field automatically added to all
models. On a custom model, it depends on `x_name`.
As it is automatically added by the ORM, `display_name` is considered a
`base` field, while `x_name` is considered a `manual` field.
On loading the transitive dependencies of `display_name` of a custom
model, for which the loading of the `x_name` has been skipped because it
depends on field not yet loaded, the exception was not ignored because
exceptions are ignored only for `manual` field, and `display_name` is
considered a `base` field.
Upgrade request 56274
X-original-commit: e57e2798ed7871967487d953ffcdc10884bcf9a2
Co-authored-by: Raphael Collet <rco@odoo.com>
| -rw-r--r-- | odoo/addons/test_new_api/tests/test_new_fields.py | 26 |
1 files changed, 26 insertions, 0 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 fe68fdac776..9986cd674c3 100644 --- a/odoo/addons/test_new_api/tests/test_new_fields.py +++ b/odoo/addons/test_new_api/tests/test_new_fields.py @@ -230,6 +230,32 @@ class TestFields(TransactionCaseWithUserDemo): sum(invalid_transitive_depends in field_triggers.get(None, []) for field_triggers in triggers.values()), 1 ) + @mute_logger('odoo.fields') + def test_10_computed_stored_x_name(self): + # create a custom model with two fields + self.env["ir.model"].create({ + "name": "x_test_10_compute_store_x_name", + "model": "x_test_10_compute_store_x_name", + "field_id": [ + (0, 0, {'name': 'x_name', 'ttype': 'char'}), + (0, 0, {'name': 'x_stuff_id', 'ttype': 'many2one', 'relation': 'ir.model'}), + ], + }) + # set 'x_stuff_id' refer to a model not loaded yet + self.cr.execute(""" + UPDATE ir_model_fields + SET relation = 'not.loaded' + WHERE model = 'x_test_10_compute_store_x_name' AND name = 'x_stuff_id' + """) + # set 'x_name' be computed and depend on 'x_stuff_id' + self.cr.execute(""" + UPDATE ir_model_fields + SET compute = 'pass', depends = 'x_stuff_id.x_custom_1' + WHERE model = 'x_test_10_compute_store_x_name' AND name = 'x_name' + """) + # setting up models should not crash + self.registry.setup_models(self.cr) + def test_10_display_name(self): """ test definition of automatic field 'display_name' """ field = type(self.env['test_new_api.discussion']).display_name |
