diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-04 14:12:34 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-04 14:12:34 +0200 |
commit | c83b3c1e68cb478f9a2c7ba226c56cfdb793fc2c (patch) | |
tree | 9c404d3c3e4d25981e7176fc0c4ef25997c84cdc | |
parent | f2cb0542faac028dc3f90a61b46c0949bb35339f (diff) | |
download | Ishtar-c83b3c1e68cb478f9a2c7ba226c56cfdb793fc2c.tar.bz2 Ishtar-c83b3c1e68cb478f9a2c7ba226c56cfdb793fc2c.zip |
Serialization: manage operation relations
-rw-r--r-- | archaeological_operations/models.py | 13 | ||||
-rw-r--r-- | archaeological_operations/serializers.py | 4 | ||||
-rw-r--r-- | archaeological_operations/tests.py | 6 |
3 files changed, 20 insertions, 3 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index c1f03368b..1bf51120a 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -1654,6 +1654,14 @@ class RelationType(GeneralRelationType): ordering = ('order', 'label') +class OperationRecordRelationManager(models.Manager): + def get_by_natural_key(self, left_record, right_record, relation_type): + return self.get( + left_record__code_patriarche=left_record, + right_record__code_patriarche=right_record, + relation_type__txt_idx=relation_type) + + class RecordRelations(GeneralRecordRelations, models.Model): MAIN_ATTR = 'left_record' left_record = models.ForeignKey(Operation, @@ -1661,6 +1669,7 @@ class RecordRelations(GeneralRecordRelations, models.Model): right_record = models.ForeignKey(Operation, related_name='left_relations') relation_type = models.ForeignKey(RelationType) + objects = OperationRecordRelationManager() class Meta: verbose_name = _("Operation record relation") @@ -1670,6 +1679,10 @@ class RecordRelations(GeneralRecordRelations, models.Model): ("view_operationrelation", "Can view all Operation relations"), ] + def natural_key(self): + return (self.left_record.code_patriarche, + self.right_record.code_patriarche, self.relation_type.txt_idx) + post_delete.connect(post_delete_record_relation, sender=RecordRelations) diff --git a/archaeological_operations/serializers.py b/archaeological_operations/serializers.py index 22f0aedc7..0826a23ce 100644 --- a/archaeological_operations/serializers.py +++ b/archaeological_operations/serializers.py @@ -3,8 +3,8 @@ from archaeological_operations import models OPERATION_MODEL_LIST = [ - models.ArchaeologicalSite, models.Operation, models.Parcel, - models.ParcelOwner + models.ArchaeologicalSite, models.Operation, models.RecordRelations, + models.Parcel, models.ParcelOwner ] diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 2c06f5a35..17d112559 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -750,7 +750,11 @@ class SerializationTest(GenericSerializationTest, TestCase): self.username, self.password, self.user = create_superuser() operation = create_operation(self.user, values={"code_patriarche": "66666"}) - create_operation(self.user, values={"code_patriarche": "66667"}) + ope2 = create_operation(self.user, values={"code_patriarche": "66667"}) + models.RecordRelations.objects.create( + left_record=operation, right_record=ope2, + relation_type=models.RelationType.objects.all()[0] + ) site = models.ArchaeologicalSite.objects.create( reference="ref-site" ) |