summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-08-28 18:27:09 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-02-28 12:15:20 +0100
commitdcd1225cef0fc3e573a11cec651e16f2b35b83cf (patch)
tree5542f0dc3de02b8d9596df321eed4a1bca1254b7 /archaeological_operations/models.py
parentadc9f5065ab78c7694c696e6eb4ed037cf73ad74 (diff)
downloadIshtar-dcd1225cef0fc3e573a11cec651e16f2b35b83cf.tar.bz2
Ishtar-dcd1225cef0fc3e573a11cec651e16f2b35b83cf.zip
Operation edit: clean potential parcel duplication
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 014dbb269..368b2e33c 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -1739,6 +1739,18 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem,
res['mode'] = " ; ".join([str(m) for m in mode(finds)])
return res
+ def clean_parcel_duplicates(self):
+ parcels = []
+ for p in self.parcels.order_by('pk').all():
+ if p.associated_file:
+ continue
+ key = (p.section, p.parcel_number, p.year, p.town.pk,
+ p.public_domain)
+ if key in parcels:
+ p.delete()
+ else:
+ parcels.append(key)
+
def save(self, *args, **kwargs):
# put a default year if start_date is defined
if self.start_date and not self.year:
@@ -1747,7 +1759,9 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem,
self.operation_code = self.get_available_operation_code(self.year)
if hasattr(self, 'code_patriarche'):
self.code_patriarche = self.code_patriarche or None
- return super(Operation, self).save(*args, **kwargs)
+ item = super(Operation, self).save(*args, **kwargs)
+ self.clean_parcel_duplicates()
+ return item
m2m_changed.connect(force_cached_label_changed, sender=Operation.towns.through)