summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_finds.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-08-29 15:52:53 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-08-29 15:52:53 +0200
commit45c062ade6edecce68e479b09117d8d75dde18a0 (patch)
treedc744f5a54d36f7d43b13e21270a323b1d764069 /archaeological_finds/models_finds.py
parente7e161c2e610b442b4d72d9d749687ff87b993f9 (diff)
downloadIshtar-45c062ade6edecce68e479b09117d8d75dde18a0.tar.bz2
Ishtar-45c062ade6edecce68e479b09117d8d75dde18a0.zip
Finds: delete associated treatment on find deletion (refs #3723)
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r--archaeological_finds/models_finds.py18
1 files changed, 17 insertions, 1 deletions
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):