Reviewers: ,
Please review this at http://codereview.tryton.org/29001/ Affected files: M tryton/gui/window/view_form/model/group.py M tryton/gui/window/view_form/view/list.py Index: tryton/gui/window/view_form/model/group.py =================================================================== --- a/tryton/gui/window/view_form/model/group.py +++ b/tryton/gui/window/view_form/model/group.py @@ -228,6 +228,12 @@ self.append(record) else: self.insert(position, record) + for record_rm in self.record_removed: + if record_rm.id == record.id: + self.record_removed.remove(record) + for record_del in self.record_deleted: + if record_del.id == record.id: + self.record_deleted.remove(record) self.current_idx = position if modified: record.modified_fields.setdefault('id') Index: tryton/gui/window/view_form/view/list.py =================================================================== --- a/tryton/gui/window/view_form/view/list.py +++ b/tryton/gui/window/view_form/view/list.py @@ -84,9 +84,18 @@ group = record_pos.group pos = group.index(record_pos) + offset if group is not record.group: + prev_group = record.group record.group.remove(record, remove=True, force_remove=True) + # Don't remove record from previous group + # as the new parent will change the parent + # This prevent concurrency conflict + record.group.record_removed.remove(record) group.add(record) - record.modified_fields.setdefault(record.parent_name or 'id') + if not record.parent_name: + record.modified_fields.setdefault(prev_group.parent_name) + record.value[prev_group.parent_name] = False + else: + record.modified_fields.setdefault(record.parent_name) group.move(record, pos) def move_before(self, record, path): -- [email protected] mailing list
