Store only once record removed or deleted

issue10236
review351891002
This commit is contained in:
Cédric Krier committed 2021-05-02 10:59:12 +02:00
1 parent 0e7d5bc288
commit c610bb8d3a
1 file changed
+11 -9
+11 -9
View File
@@ -416,23 +416,25 @@ class Group(SignalEvent, list):
def remove(self, record, remove=False, modified=True, signal=True,
force_remove=False):
idx = self.index(record)
if self[idx].id >= 0:
if record.id >= 0:
if remove:
if self[idx] in self.record_deleted:
self.record_deleted.remove(self[idx])
self.record_removed.append(self[idx])
if record in self.record_deleted:
self.record_deleted.remove(record)
if record not in self.record_removed:
self.record_removed.append(record)
else:
if self[idx] in self.record_removed:
self.record_removed.remove(self[idx])
self.record_deleted.append(self[idx])
if record in self.record_removed:
self.record_removed.remove(record)
if record not in self.record_deleted:
self.record_deleted.append(record)
if record.parent:
record.parent.modified_fields.setdefault('id')
record.parent.signal('record-modified')
if modified:
record.modified_fields.setdefault('id')
record.signal('record-modified')
if self[idx].id < 0 or force_remove:
self._remove(self[idx])
if record.id < 0 or force_remove:
self._remove(record)
if len(self):
self.current_idx = min(idx, len(self) - 1)