UPDATE
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from .mock_data import VALID_CARD_IDS, VALID_ROW_IDS
|
||||
|
||||
|
||||
class FarmDashboardConfigSerializer(serializers.Serializer):
|
||||
disabled_card_ids = serializers.ListField(
|
||||
child=serializers.CharField(),
|
||||
allow_empty=True,
|
||||
)
|
||||
row_order = serializers.ListField(
|
||||
child=serializers.CharField(),
|
||||
allow_empty=False,
|
||||
)
|
||||
enable_drag_reorder = serializers.BooleanField()
|
||||
|
||||
def validate_disabled_card_ids(self, value):
|
||||
invalid_ids = [card_id for card_id in value if card_id not in VALID_CARD_IDS]
|
||||
if invalid_ids:
|
||||
raise serializers.ValidationError(
|
||||
f"Invalid card IDs: {', '.join(invalid_ids)}."
|
||||
)
|
||||
if len(set(value)) != len(value):
|
||||
raise serializers.ValidationError("disabled_card_ids must not contain duplicates.")
|
||||
return value
|
||||
|
||||
def validate_row_order(self, value):
|
||||
invalid_ids = [row_id for row_id in value if row_id not in VALID_ROW_IDS]
|
||||
if invalid_ids:
|
||||
raise serializers.ValidationError(
|
||||
f"Invalid row IDs: {', '.join(invalid_ids)}."
|
||||
)
|
||||
if len(set(value)) != len(value):
|
||||
raise serializers.ValidationError("row_order must not contain duplicates.")
|
||||
if set(value) != set(VALID_ROW_IDS):
|
||||
raise serializers.ValidationError(
|
||||
"row_order must contain each valid row ID exactly once."
|
||||
)
|
||||
return value
|
||||
|
||||
|
||||
class FarmDashboardConfigPatchSerializer(FarmDashboardConfigSerializer):
|
||||
disabled_card_ids = serializers.ListField(
|
||||
child=serializers.CharField(),
|
||||
allow_empty=True,
|
||||
required=False,
|
||||
)
|
||||
row_order = serializers.ListField(
|
||||
child=serializers.CharField(),
|
||||
allow_empty=False,
|
||||
required=False,
|
||||
)
|
||||
enable_drag_reorder = serializers.BooleanField(required=False)
|
||||
|
||||
def validate(self, attrs):
|
||||
attrs = super().validate(attrs)
|
||||
if not attrs:
|
||||
raise serializers.ValidationError("At least one config field must be provided.")
|
||||
return attrs
|
||||
Reference in New Issue
Block a user