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_context_records/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_context_records/models.py')
| -rw-r--r-- | archaeological_context_records/models.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 4da7e35e2..87300b899 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -27,7 +27,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 -from django.db.models.signals import post_delete, post_save, m2m_changed +from django.db.models.signals import m2m_changed, pre_delete, post_delete, post_save from django.urls import reverse, reverse_lazy from ishtar_common.utils import get_generated_id, gettext_lazy as _, pgettext_lazy, \ @@ -59,6 +59,7 @@ from ishtar_common.models import ( RelationItem, Town, get_current_profile, + geo_item_pre_delete, document_attached_changed, HistoryModel, GeoItem, @@ -1485,10 +1486,11 @@ class ContextRecord( Return sub object list that will be deleted :return: {"Sub object type": ["Sub object 1", "Sub object 2", ...]} """ + data = super().get_deleted_data() if not self.base_finds.count(): - return {} + return data lbl = str(_("Base finds")) - data = {lbl: []} + data[lbl] = [] for item in self.base_finds.all(): data[lbl].append(str(item)) for key, value in item.get_deleted_data().items(): @@ -1514,11 +1516,11 @@ class ContextRecord( def context_record_post_save(sender, **kwargs): - cached_label_changed(sender=sender, **kwargs) - post_save_geo(sender=sender, **kwargs) instance = kwargs.get("instance", None) - if not instance or not instance.pk: + if not instance or not instance.pk or getattr(instance, "__delete", False): return + cached_label_changed(sender=sender, **kwargs) + post_save_geo(sender=sender, **kwargs) profile = get_current_profile() if profile.parent_relations_engine == "T": ContextRecordTree._update_self_relation(instance.pk) # on creation: manage self relation @@ -1532,6 +1534,7 @@ def context_record_post_save(sender, **kwargs): cached_label_changed(Find, instance=f) +pre_delete.connect(geo_item_pre_delete, sender=ContextRecord) post_save.connect(context_record_post_save, sender=ContextRecord) m2m_changed.connect(document_attached_changed, sender=ContextRecord.documents.through) m2m_changed.connect(geodata_attached_changed, sender=ContextRecord.geodata.through) |
