diff options
| 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 |
| commit | 47ae57c37abfed75f93594255b6c617afa011bf5 (patch) | |
| tree | c9172a07ceb24b67854009b0c3cad9e365affe7b /archaeological_operations/models.py | |
| parent | 713a5fd98aef4432977461dbf0b24790b9539053 (diff) | |
| download | Ishtar-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.py | 16 |
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): |
