From 947d6d1956cc9ade711bf74fa50cdb334981419f Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sun, 25 Jan 2015 13:56:23 +0100 Subject: Automatically delete symetric/inverse context records relations --- archaeological_context_records/models.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index acc761a86..8cc10172f 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -21,6 +21,7 @@ from django.conf import settings from django.contrib.gis.db import models from django.core.exceptions import ValidationError from django.core.urlresolvers import reverse +from django.db.models.signals import post_delete from django.utils.translation import ugettext_lazy as _, ugettext, pgettext from ishtar_common.models import GeneralType, BaseHistorizedItem, \ @@ -300,6 +301,22 @@ class RecordRelations(models.Model): RecordRelations.objects.get_or_create(**dct) return obj +def post_delete_record_relation(sender, instance, **kwargs): + # delete symmetrical or inverse relation + sym_rel_type = instance.relation_type + if not instance.relation_type.symmetrical: + sym_rel_type = instance.relation_type.inverse_relation + + # no symetric/inverse is defined + if not sym_rel_type: + return + + dct = {'right_record':self.left_record, 'left_record':self.right_record, + 'relation_type':self.relation_type} + RecordRelations.objects.filter(**dct).delete() + +post_delete.connect(post_delete_record_relation, sender=RecordRelations) + class ContextRecordSource(Source): class Meta: verbose_name = _(u"Context record documentation") -- cgit v1.2.3