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"          ) | 
