summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2025-11-29 16:45:39 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-11-29 16:45:39 +0100
commit47ae57c37abfed75f93594255b6c617afa011bf5 (patch)
treec9172a07ceb24b67854009b0c3cad9e365affe7b /archaeological_operations/models.py
parent713a5fd98aef4432977461dbf0b24790b9539053 (diff)
downloadIshtar-47ae57c37abfed75f93594255b6c617afa011bf5.tar.bz2
Ishtar-47ae57c37abfed75f93594255b6c617afa011bf5.zip
🐛 fix deletion of items with associated datations - better performance for deletion - delete directly associéted geovectordata
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 6ef6ced88..452874abe 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -32,7 +32,7 @@ from django.contrib.postgres.indexes import GinIndex
from django.contrib.sites.models import Site
from django.db import transaction, OperationalError, IntegrityError
from django.db.models import Q, Max, Sum
-from django.db.models.signals import post_save, m2m_changed, post_delete
+from django.db.models.signals import m2m_changed, post_save, post_delete, pre_delete
from django.forms import ValidationError
from django.urls import reverse, reverse_lazy
from ishtar_common.data_importer import post_importer_action
@@ -73,6 +73,7 @@ from ishtar_common.models import (
QuickAction,
MainItem,
HierarchicalType,
+ geo_item_pre_delete,
)
from ishtar_common.models_common import Department, GeoVectorData, HistoricalRecords,\
geodata_attached_changed, geotown_attached_changed
@@ -1015,6 +1016,11 @@ class ArchaeologicalSite(
def site_post_save(sender, **kwargs):
+ instance = kwargs.get("instance", None)
+ if not instance or not instance.pk:
+ return
+ if getattr(instance, "__delete", False):
+ return
cached_label_changed(sender=sender, **kwargs)
post_save_geo(sender=sender, **kwargs)
@@ -1937,10 +1943,10 @@ class Operation(
Return sub object list that will be deleted
:return: {"Sub object type": ["Sub object 1", "Sub object 2", ...]}
"""
- data = {}
+ data = super().get_deleted_data()
if self.administrative_act.count():
lbl = str(_("Administrative act"))
- data = {lbl: []}
+ data[lbl] = []
for item in self.administrative_act.all():
data[lbl].append(str(item))
if self.context_record.count():
@@ -2696,7 +2702,8 @@ for attr in Operation.HISTORICAL_M2M:
def operation_post_save(sender, **kwargs):
- if not kwargs["instance"]:
+ instance = kwargs.get("instance", None)
+ if not instance or not instance.pk or getattr(instance, "__delete", False):
return
post_save_geo(sender=sender, **kwargs)
@@ -2743,6 +2750,7 @@ def operation_post_save(sender, **kwargs):
post_save.connect(operation_post_save, sender=Operation)
+pre_delete.connect(geo_item_pre_delete, sender=Operation)
def operation_town_m2m_changed(sender, **kwargs):