Fix value of O2M to not add/write for deleted/removed record

issue2085
review64001
This commit is contained in:
Cédric Krier committed 2011-07-20 18:59:08 +02:00
1 parent c8cc6f96eb
commit f1d89ab81f
1 file changed
+8 -6
+8 -6
View File
@@ -453,8 +453,12 @@ class O2MField(CharField):
def get(self, record, check_load=True, readonly=True, modified=False):
if record.value.get(self.name) is None:
return []
record_removed = record.value[self.name].record_removed
record_deleted = record.value[self.name].record_deleted
result = [('add', [])]
for record2 in record.value[self.name]:
if record2 in record_removed or record2 in record_deleted:
continue
if record2.id > 0:
values = record2.get(check_load=check_load,
get_readonly=readonly, get_modifiedonly=modified)
@@ -464,12 +468,10 @@ class O2MField(CharField):
else:
result.append(('create',
record2.get(check_load=check_load, get_readonly=readonly)))
if record.value[self.name].record_removed:
result.append(('unlink', [x.id for x in \
record.value[self.name].record_removed]))
if record.value[self.name].record_deleted:
result.append(('delete', [x.id for x in \
record.value[self.name].record_deleted]))
if record_removed:
result.append(('unlink', [x.id for x in record_removed]))
if record_deleted:
result.append(('delete', [x.id for x in record_deleted]))
return result
def get_timestamp(self, record):