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 b26f66d9a51..d7176e350d9 100644 --- a/odoo/addons/test_new_api/tests/test_new_fields.py +++ b/odoo/addons/test_new_api/tests/test_new_fields.py @@ -2536,6 +2536,24 @@ class TestFields(TransactionCaseWithUserDemo): self.assertFalse(Model.rare_description.prefetch) self.assertFalse(Model.rare_html_description.prefetch) + def test_98_unlink_recompute(self): + move = self.env['test_new_api.move'].create({ + 'line_ids': [(0, 0, {'quantity': 42})], + }) + line = move.line_ids + self.assertEqual(move.quantity, 42) + + # create an ir.rule for lines that uses move.quantity + self.env['ir.rule'].create({ + 'model_id': self.env['ir.model']._get(line._name).id, + 'domain_force': "[('move_id.quantity', '>=', 0)]", + }) + + # unlink the line, and check the recomputation of move.quantity + user = self.env.ref('base.user_demo') + line.with_user(user).unlink() + self.assertEqual(move.quantity, 0) + class TestX2many(common.TransactionCase): def test_definition_many2many(self): diff --git a/odoo/models.py b/odoo/models.py index 8b4196b960d..221fecc9913 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -3635,6 +3635,7 @@ Fields: return True self.check_access_rights('unlink') + self.check_access_rule('unlink') self._check_concurrency() from odoo.addons.base.models.ir_model import MODULE_UNINSTALL_FLAG @@ -3649,8 +3650,6 @@ Fields: self.modified(self._fields, before=True) with self.env.norecompute(): - self.check_access_rule('unlink') - cr = self._cr Data = self.env['ir.model.data'].sudo().with_context({}) Defaults = self.env['ir.default'].sudo()