summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-06 10:57:54 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-06 10:57:54 +0200
commitd0c41db15d9bc583a639a6f46b9376092dda1e11 (patch)
tree0262b718b58e6cbd459549674af69b7a130141e3
parente2f4f113f4b3f5742c4b61707bfbe2d8fa6cca91 (diff)
downloadIshtar-d0c41db15d9bc583a639a6f46b9376092dda1e11.tar.bz2
Ishtar-d0c41db15d9bc583a639a6f46b9376092dda1e11.zip
Serialization: natural key for relations between context records
-rw-r--r--archaeological_context_records/models.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index f0786e762..875a48019 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -884,6 +884,13 @@ class RelationType(GeneralRelationType):
ordering = ('order', 'label')
+class RecordRelationsManager(models.Manager):
+ def get_by_natural_key(self, left_record, right_record, relation_type):
+ return self.get(left_record__uuid=left_record,
+ right_record__uuid=right_record,
+ relation_type__txt_idx=relation_type)
+
+
class RecordRelations(GeneralRecordRelations, models.Model):
MAIN_ATTR = 'left_record'
left_record = models.ForeignKey(ContextRecord,
@@ -891,6 +898,7 @@ class RecordRelations(GeneralRecordRelations, models.Model):
right_record = models.ForeignKey(ContextRecord,
related_name='left_relations')
relation_type = models.ForeignKey(RelationType)
+ objects = RecordRelationsManager()
TABLE_COLS = [
"left_record__label", "left_record__unit", "left_record__parcel",
"relation_type",
@@ -922,6 +930,10 @@ class RecordRelations(GeneralRecordRelations, models.Model):
("view_recordrelation", "Can view all Context record relations"),
]
+ def natural_key(self):
+ return self.left_record.uuid, self.right_record.uuid, \
+ self.relation_type.txt_idx
+
post_delete.connect(post_delete_record_relation, sender=RecordRelations)