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