diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-09-09 09:12:11 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-09-09 09:12:11 +0200 |
commit | a854fb0090f0deb674e83011c45a2e6c4ff0caee (patch) | |
tree | 0e943c82ea96146ae0987314abaa3e8f487c8c23 /archaeological_finds/models_finds.py | |
parent | 8801ab7b7e655d8b831e535381eeea8adc091989 (diff) | |
parent | 2ad59aa6f6f4506d86c205f78a99ed5e47992156 (diff) | |
download | Ishtar-a854fb0090f0deb674e83011c45a2e6c4ff0caee.tar.bz2 Ishtar-a854fb0090f0deb674e83011c45a2e6c4ff0caee.zip |
Merge branch 'master' into v0.9
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 24 |
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): |