diff options
| author | Raphael Collet <rco@odoo.com> | 2020-05-05 08:54:53 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-05-06 19:25:17 +0000 |
| commit | eb08e2c22896334fc26aedb353a310421e42b89b (patch) | |
| tree | ea10f34605c89bb507a0adc324335cb3090ce9df /odoo/addons/test_new_api/models/test_new_api.py | |
| parent | 864e1ed61d3a19b4ebb19ba15c625c5d3079e3ba (diff) | |
[FIX] core: unexpected cache invalidation when updating one2many
When setting a many2one field, the corresponding one2many fields are
updated in cache. When such a one2many field has a domain, the
evaluation of the domain may require to fetch some fields from the
database. If the `towrite` cache has not been updated yet, the many2one
field is overridden by the database value.
Fix by setting the `towrite` cache before updating inverse fields.
closes odoo/odoo#50788
X-original-commit: c1ebfe05a66cfebc7ced36e25db5f6ff4bfb2d46
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
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.py | 22 |
1 files changed, 22 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 af2aeed2312..df270670a00 100644 --- a/odoo/addons/test_new_api/models/test_new_api.py +++ b/odoo/addons/test_new_api/models/test_new_api.py @@ -437,6 +437,28 @@ class MultiComputeInverse(models.Model): record.write({'foo': '/'.join([record.bar1, record.bar2, record.bar3])}) +class Move(models.Model): + _name = 'test_new_api.move' + _description = 'Move' + + line_ids = fields.One2many('test_new_api.move_line', 'move_id', domain=[('visible', '=', True)]) + quantity = fields.Integer(compute='_compute_quantity', store=True) + + @api.depends('line_ids.quantity') + def _compute_quantity(self): + for record in self: + record.quantity = sum(line.quantity for line in record.line_ids) + + +class MoveLine(models.Model): + _name = 'test_new_api.move_line' + _description = 'Move Line' + + move_id = fields.Many2one('test_new_api.move', required=True, ondelete='cascade') + visible = fields.Boolean(default=True) + quantity = fields.Integer() + + class CompanyDependent(models.Model): _name = 'test_new_api.company' _description = 'Test New API Company' |
