From dd7847336d40c5b9814d8e63bfd0dd6b24d508fe Mon Sep 17 00:00:00 2001
From: Valentin Rigal <rigal@teklia.com>
Date: Fri, 29 Mar 2024 16:40:00 +0100
Subject: [PATCH] Prevent duplication of dataset elements

---
 arkindex/training/serializers.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/arkindex/training/serializers.py b/arkindex/training/serializers.py
index ee6d05196f..9c4e357380 100644
--- a/arkindex/training/serializers.py
+++ b/arkindex/training/serializers.py
@@ -714,7 +714,18 @@ class DatasetElementSerializer(serializers.ModelSerializer):
 
     def validate(self, data):
         data = super().validate(data)
-        data.pop("dataset")
+        dataset = data.pop("dataset")
+        if dataset.unique_elements and (
+            set := (
+                dataset.sets
+                .filter(set_elements__element_id=data["element_id"])
+                .values_list("name", flat=True)
+                .first()
+            )
+        ):
+            raise ValidationError({"element_id": [
+                f"The dataset prevent duplication and this element is already present in set {set}."
+            ]})
         return data
 
 
-- 
GitLab