[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).
This commit is contained in:
+1
-1
@@ -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])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user