summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/models.py13
-rw-r--r--archaeological_operations/serializers.py4
-rw-r--r--archaeological_operations/tests.py6
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"
)