summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_finds.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-08-29 16:19:42 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-08-29 16:19:42 +0200
commit2de7659d543cf1063cd399be73e10818331b5a5b (patch)
tree7f64fa5d9e8b8c263e2f61344e089698c7d65265 /archaeological_finds/models_finds.py
parentef6a28d409dab27ac9f26c7ce259ece7ea125994 (diff)
parent02369bdd4c7d82f43cef34fa19344876087a8159 (diff)
downloadIshtar-2de7659d543cf1063cd399be73e10818331b5a5b.tar.bz2
Ishtar-2de7659d543cf1063cd399be73e10818331b5a5b.zip
Merge branch 'master' into develop
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 59b8eb1d0..b3a167a26 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.data_importer import post_importer_action, ImporterError
@@ -1219,7 +1220,28 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, ImageModel,
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):