diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-01-25 13:39:09 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-01-25 13:39:09 +0100 |
commit | d8d25570ad28f3ea852a55784b0b0e9c52b6b86e (patch) | |
tree | dafd829767f91b12fdc045c587c60e372ae39ea8 /archaeological_context_records/models.py | |
parent | 9d00d653ef214b781f4de4e78ff80b56ebbd49be (diff) | |
download | Ishtar-d8d25570ad28f3ea852a55784b0b0e9c52b6b86e.tar.bz2 Ishtar-d8d25570ad28f3ea852a55784b0b0e9c52b6b86e.zip |
Automatically add symetric/inverse for context records relations
Diffstat (limited to 'archaeological_context_records/models.py')
-rw-r--r-- | archaeological_context_records/models.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 9a4fa7880..acc761a86 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -282,6 +282,24 @@ class RecordRelations(models.Model): verbose_name = _(u"Record relation") verbose_name_plural = _(u"Record relations") + def save(self, *args, **kwargs): + obj = super(RelationType, self).save(*args, **kwargs) + + # after saving create the symetric or the inverse relation + + sym_rel_type = obj.relation_type + if not obj.relation_type.symmetrical: + sym_rel_type = obj.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.get_or_create(**dct) + return obj + class ContextRecordSource(Source): class Meta: verbose_name = _(u"Context record documentation") |