Skip to content

Commit d6f2551

Browse files
author
Mickaël Guérin
committed
Check for unicity in NestedListSerializers
1 parent 2358b70 commit d6f2551

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

formidable/serializers/access.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class AccessListSerializer(NestedListSerializer):
3636
parent_name = 'field_id'
3737

3838
def validate(self, data):
39+
data = super(AccessListSerializer, self).validate(data)
3940
accesses_id = [accesses['access_id'] for accesses in data]
4041

4142
for access in get_accesses():

formidable/serializers/fields.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ def validate(self, validated_data):
4141
order before the update/create method sorts the validated data
4242
by id.
4343
"""
44+
validated_data = super(FieldListSerializer, self).validate(
45+
validated_data)
4446
for index, data in enumerate(validated_data):
4547
data['order'] = index
4648

formidable/serializers/list.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import logging
66

7+
from rest_framework.exceptions import ValidationError
78
from rest_framework.serializers import ListSerializer
89

910
logger = logging.getLogger(__name__)
@@ -50,6 +51,21 @@ def _extract_id(self, qs, validated_data):
5051
deleted_ids = db_ids - validated_ids
5152
return created_ids, updated_ids, deleted_ids
5253

54+
def validate(self, data):
55+
"""
56+
ensure that field_id is unique among children
57+
"""
58+
data = super(NestedListSerializer, self).validate(data)
59+
60+
if self.field_id:
61+
if len(data) != len(set(f[self.field_id] for f in data)):
62+
msg = 'The fields {field_id} must make a unique set.'.format(
63+
field_id=self.field_id
64+
)
65+
raise ValidationError(msg, code='unique')
66+
67+
return data
68+
5369

5470
class NestedListSerializerDummyUpdate(NestedListSerializer):
5571

0 commit comments

Comments
 (0)