From ea21c7a8ee5a62bd22d965eb861844ec4e884f75 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 2 Jun 2017 16:25:08 +0200 Subject: [PATCH] [FIX] P3: try to write fields in source order When adding a Python constraint on a (relational) field which uses an other (relational) field, the order in which the fields are written is also the order in which they are checked, and if a constraint depends on a sibling field this might blow up in P3, here as in as in test_new_api.message.Message (_check_author constraint depends on parent discussion's participants): test_11_stored would commonly fail when creating a discussion with two participants and 3 messages (because the message's authors would be checked before the participants had been associated with the discussion). --- odoo/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odoo/models.py b/odoo/models.py index 8a231a756ad..71040650173 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -3423,7 +3423,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): if not key.startswith('default_')} # call the 'write' method of fields which are not columns - for name in upd_todo: + for name in sorted(upd_todo, key=lambda name: self._fields[name]._sequence): field = self._fields[name] field.write(self.with_context(rel_context), vals[name])