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_finds | |
| 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_finds')
| -rw-r--r-- | archaeological_finds/models_finds.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 5eed32772..56232165f 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -71,6 +71,8 @@ from ishtar_common.models import ( QuickAction, SearchVectorConfig, ValueGetter, + main_item_pre_delete, + geo_item_pre_delete ) from ishtar_common.models_common import HistoricalRecords, SerializeItem, \ GeoVectorData, geodata_attached_changed @@ -938,21 +940,23 @@ class BaseFind( Return sub object list that will be deleted :return: {"Sub object type": ["Sub object 1", "Sub object 2", ...]} """ + data = super().get_deleted_data() if self.find.count() != 1: - return {} + return data lbl = str(_("Finds")) - data = {lbl: []} + data[lbl] = [] for item in self.find.all(): data[lbl].append(str(item)) return data def post_save_basefind(sender, **kwargs): + instance = kwargs.get("instance", None) + if not instance or not instance.pk or getattr(instance, "__delete", False): + return cached_label_changed(sender, **kwargs) post_save_geo(sender, **kwargs) instance = kwargs.get("instance", None) - if not instance or not instance.pk: - return for f in instance.find.all(): cached_label_changed(Find, instance=f) @@ -961,10 +965,12 @@ def pre_delete_basefind(sender, **kwargs): instance = kwargs["instance"] if not instance or not instance.pk: return + geo_item_pre_delete(sender, **kwargs) q = Find.objects.filter(base_finds__pk=instance.pk) for find in q.all(): if find.base_finds.count() == 1: # only associated to the deleted base find find.__base_find_deleted = True # prevent loop + find.__delete = True find.delete() @@ -3828,6 +3834,14 @@ def pre_clean_find(sender, **kwargs): instance.upstream_treatment.delete() +def pre_delete_find(sender, **kwargs): + instance = kwargs["instance"] + if not instance or not instance.pk: + return + main_item_pre_delete(sender, **kwargs) + + +pre_delete.connect(pre_delete_find, sender=Find) post_save.connect(cached_label_changed, sender=Find) pre_delete.connect(pre_clean_find, sender=Find) |
