[FIX] base_changeset: assign values for all computed fields

pull/2380/head
Stefan Rijnhart 2021-12-23 16:14:32 +01:00 committed by Miquel Raïch
parent ace747368d
commit d43b2c1eb8
2 changed files with 18 additions and 6 deletions

View File

@ -155,14 +155,24 @@ class RecordChangesetChange(models.Model):
@api.depends("changeset_id.res_id", "changeset_id.model") @api.depends("changeset_id.res_id", "changeset_id.model")
def _compute_origin_values(self): def _compute_origin_values(self):
states = self.get_pending_changes_states() states = self.get_pending_changes_states()
field_names = [
field_name
for field_name in self._fields.keys()
if field_name.startswith("origin_value_")
and field_name != "origin_value_display"
]
for rec in self: for rec in self:
field_name = rec.get_field_for_type(rec.field_id, "origin") field_name = rec.get_field_for_type(rec.field_id, "origin")
if rec.state in states: for fname in field_names:
value = rec.record_id[rec.field_id.name] if fname == field_name:
else: if rec.state in states:
old_field = rec.get_field_for_type(rec.field_id, "old") value = rec.record_id[rec.field_id.name]
value = rec[old_field] else:
setattr(rec, field_name, value) old_field = rec.get_field_for_type(rec.field_id, "old")
value = rec[old_field]
setattr(rec, fname, value)
else:
setattr(rec, fname, False)
@api.depends(lambda self: self._value_fields) @api.depends(lambda self: self._value_fields)
def _compute_value_display(self): def _compute_value_display(self):

View File

@ -115,6 +115,8 @@ class TestChangesetFlow(ChangesetTestCommon, TransactionCase):
self.assertEqual(self.partner.count_pending_changesets, 0) self.assertEqual(self.partner.count_pending_changesets, 0)
self.assertEqual(self.partner.name, "Y") self.assertEqual(self.partner.name, "Y")
self.assertEqual(changeset.change_ids.state, "done") self.assertEqual(changeset.change_ids.state, "done")
# All computed fields are assigned
changeset.change_ids.read()
def test_apply_done_change(self): def test_apply_done_change(self):
""" Done changes do not apply (already applied) """ """ Done changes do not apply (already applied) """