From 45c062ade6edecce68e479b09117d8d75dde18a0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 29 Aug 2017 15:52:53 +0200 Subject: Finds: delete associated treatment on find deletion (refs #3723) --- archaeological_finds/models_finds.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'archaeological_finds/models_finds.py') diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 78280bede..bc96ded25 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -24,7 +24,8 @@ from django.contrib.gis.db import models from django.core.urlresolvers import reverse from django.db import connection, transaction from django.db.models import Max, Q -from django.db.models.signals import m2m_changed, post_save, post_delete +from django.db.models.signals import m2m_changed, post_save, post_delete, \ + pre_delete from django.utils.translation import ugettext_lazy as _, ugettext from ishtar_common.utils import cached_label_changed, post_save_point @@ -1102,7 +1103,22 @@ class Find(ValueGetter, BaseHistorizedItem, ImageModel, OwnPerms, Dating.fix_dating_association(self) +def pre_clean_treatments(sender, **kwargs): + if not kwargs.get('instance'): + return + instance = kwargs.get('instance') + if instance.downstream_treatment: + # TODO: not managed for now. Raise an error? + return + if not instance.upstream_treatment: + return + instance.upstream_treatment.upstream.clear() + instance.upstream_treatment.downstream.clear() + instance.upstream_treatment.delete() + + post_save.connect(cached_label_changed, sender=Find) +pre_delete.connect(pre_clean_treatments, sender=Find) def base_find_find_changed(sender, **kwargs): -- cgit v1.2.3