summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_finds.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r--archaeological_finds/models_finds.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 78280bede..66059079b 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,28 @@ class Find(ValueGetter, BaseHistorizedItem, ImageModel, OwnPerms,
Dating.fix_dating_association(self)
+def pre_clean_find(sender, **kwargs):
+ if not kwargs.get('instance'):
+ return
+ instance = kwargs.get('instance')
+
+ for bf in instance.base_finds.all():
+ # no other find is associated
+ if not bf.find.exclude(pk=instance.pk).count():
+ bf.delete()
+
+ 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_find, sender=Find)
def base_find_find_changed(sender, **kwargs):