summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-01-25 13:56:23 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2015-01-25 13:56:23 +0100
commit947d6d1956cc9ade711bf74fa50cdb334981419f (patch)
tree4d10b9099fb94b86e03e537f3af5c5be346c169e
parent9a5d47d504c105d4606b88b155f161262e15e619 (diff)
downloadIshtar-947d6d1956cc9ade711bf74fa50cdb334981419f.tar.bz2
Ishtar-947d6d1956cc9ade711bf74fa50cdb334981419f.zip
Automatically delete symetric/inverse context records relations
-rw-r--r--archaeological_context_records/models.py17
1 files changed, 17 insertions, 0 deletions
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")