diff options
| 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 | 
| commit | 947d6d1956cc9ade711bf74fa50cdb334981419f (patch) | |
| tree | 4d10b9099fb94b86e03e537f3af5c5be346c169e | |
| parent | 9a5d47d504c105d4606b88b155f161262e15e619 (diff) | |
| download | Ishtar-947d6d1956cc9ade711bf74fa50cdb334981419f.tar.bz2 Ishtar-947d6d1956cc9ade711bf74fa50cdb334981419f.zip  | |
Automatically delete symetric/inverse context records relations
| -rw-r--r-- | archaeological_context_records/models.py | 17 | 
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")  | 
