summaryrefslogtreecommitdiff
path: root/odoo/addons
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2020-08-21 08:40:47 +0000
committerRaphael Collet <rco@odoo.com>2020-08-21 09:39:27 +0000
commit126ebbc905af9f7eb5a4887cfb57ef7944bec019 (patch)
tree23f0671b7f5ea22b389fc8133cb7daf797e74a33 /odoo/addons
parent5dbabad0a168efb19ef4f39aac4464034f5bcb0a (diff)
[IMP] core: error message for computed field left unassigned
Non-stored readonly computed fields must be assigned by compute method. Make the error message more explicit. closes odoo/odoo#56269 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Diffstat (limited to 'odoo/addons')
-rw-r--r--odoo/addons/test_new_api/models/test_new_api.py27
-rw-r--r--odoo/addons/test_new_api/security/ir.model.access.csv1
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py19
3 files changed, 47 insertions, 0 deletions
diff --git a/odoo/addons/test_new_api/models/test_new_api.py b/odoo/addons/test_new_api/models/test_new_api.py
index 99f0fd65b68..4ca9417ae5a 100644
--- a/odoo/addons/test_new_api/models/test_new_api.py
+++ b/odoo/addons/test_new_api/models/test_new_api.py
@@ -594,6 +594,33 @@ class ComputeOnchangeLine(models.Model):
required=True, ondelete='cascade')
+class ComputeUnassigned(models.Model):
+ _name = 'test_new_api.compute.unassigned'
+ _description = "Model with computed fields left unassigned"
+
+ foo = fields.Char()
+ bar = fields.Char(compute='_compute_bar')
+ bare = fields.Char(compute='_compute_bare', readonly=False)
+ bars = fields.Char(compute='_compute_bars', store=True)
+ bares = fields.Char(compute='_compute_bares', readonly=False, store=True)
+
+ @api.depends('foo')
+ def _compute_bar(self):
+ pass
+
+ @api.depends('foo')
+ def _compute_bare(self):
+ pass
+
+ @api.depends('foo')
+ def _compute_bars(self):
+ pass
+
+ @api.depends('foo')
+ def _compute_bares(self):
+ pass
+
+
class ModelBinary(models.Model):
_name = 'test_new_api.model_binary'
_description = 'Test Image field'
diff --git a/odoo/addons/test_new_api/security/ir.model.access.csv b/odoo/addons/test_new_api/security/ir.model.access.csv
index be706801d98..37b088db27e 100644
--- a/odoo/addons/test_new_api/security/ir.model.access.csv
+++ b/odoo/addons/test_new_api/security/ir.model.access.csv
@@ -26,6 +26,7 @@ access_test_new_api_cascade,access_test_new_api_cascade,model_test_new_api_casca
access_test_new_api_compute_readwrite,access_test_new_api_compute_readwrite,model_test_new_api_compute_readwrite,,1,1,1,1
access_test_new_api_compute_onchange,access_test_new_api_compute_onchange,model_test_new_api_compute_onchange,,1,1,1,1
access_test_new_api_compute_onchange_line,access_test_new_api_compute_onchange_line,model_test_new_api_compute_onchange_line,,1,1,1,1
+access_test_new_api_compute_unassigned,access_test_new_api_compute_unassigned,model_test_new_api_compute_unassigned,,1,1,1,1
access_test_new_api_binary_svg,access_test_new_api_binary_svg,model_test_new_api_binary_svg,,1,1,1,1
access_test_new_api_monetary_base,access_test_new_api_monetary_base,model_test_new_api_monetary_base,,1,1,1,1
access_test_new_api_monetary_related,access_test_new_api_monetary_related,model_test_new_api_monetary_related,,1,1,1,1
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 5591ce7e4c5..f8e9e6db49c 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -615,6 +615,25 @@ class TestFields(TransactionCaseWithUserDemo):
discussion.name = "X"
discussion.flush()
+ def test_16_compute_unassigned(self):
+ model = self.env['test_new_api.compute.unassigned']
+
+ # real record
+ record = model.create({})
+ with self.assertRaises(ValueError):
+ record.bar
+ self.assertEqual(record.bare, False)
+ self.assertEqual(record.bars, False)
+ self.assertEqual(record.bares, False)
+
+ # new record
+ record = model.new()
+ with self.assertRaises(ValueError):
+ record.bar
+ self.assertEqual(record.bare, False)
+ self.assertEqual(record.bars, False)
+ self.assertEqual(record.bares, False)
+
def test_20_float(self):
""" test rounding of float fields """
record = self.env['test_new_api.mixed'].create({})