[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:
Xavier Morel
2017-06-12 11:04:23 +02:00
parent ba1b88db34
commit ea21c7a8ee
+1 -1
View File
@@ -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])