summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api/models/test_new_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/test_new_api/models/test_new_api.py')
-rw-r--r--odoo/addons/test_new_api/models/test_new_api.py26
1 files changed, 26 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 0ceb37a0988..602173c4145 100644
--- a/odoo/addons/test_new_api/models/test_new_api.py
+++ b/odoo/addons/test_new_api/models/test_new_api.py
@@ -1052,3 +1052,29 @@ class SelectionNonStored(models.Model):
('foo', "Foo"),
('bar', "Bar"),
], store=False)
+
+
+# Special classes to ensure the correct usage of a shared cache amongst users.
+# See the method test_shared_cache_computed_field
+class SharedCacheComputeParent(models.Model):
+ _name = 'test_new_api.model_shared_cache_compute_parent'
+ _description = 'model_shared_cache_compute_parent'
+
+ name = fields.Char(string="Task Name")
+ line_ids = fields.One2many(
+ 'test_new_api.model_shared_cache_compute_line', 'parent_id', string="Timesheets")
+ total_amount = fields.Integer(compute='_compute_total_amount', store=True, compute_sudo=True)
+
+ @api.depends('line_ids.amount')
+ def _compute_total_amount(self):
+ for parent in self:
+ parent.total_amount = sum(parent.line_ids.mapped('amount'))
+
+
+class ShareCacheComputeLine(models.Model):
+ _name = 'test_new_api.model_shared_cache_compute_line'
+ _description = 'model_shared_cache_compute_line'
+
+ parent_id = fields.Many2one('test_new_api.model_shared_cache_compute_parent')
+ amount = fields.Integer()
+ user_id = fields.Many2one('res.users', default= lambda self: self.env.user) # Note: There is an ir.rule about this.