♻️(backend) factorize validation-only serializers to reduce duplication
Eliminates code duplication across validation serializers, improving maintainability and ensuring consistent validation behavior throughout the API layer.
This commit is contained in:
committed by
aleb_the_flash
parent
206babb20f
commit
fd7a78e80e
@@ -1,5 +1,7 @@
|
|||||||
"""Client serializers for the Meet core app."""
|
"""Client serializers for the Meet core app."""
|
||||||
|
|
||||||
|
# pylint: disable=W0223
|
||||||
|
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
@@ -179,7 +181,19 @@ class RecordingSerializer(serializers.ModelSerializer):
|
|||||||
read_only_fields = fields
|
read_only_fields = fields
|
||||||
|
|
||||||
|
|
||||||
class StartRecordingSerializer(serializers.Serializer):
|
class BaseValidationOnlySerializer(serializers.Serializer):
|
||||||
|
"""Base serializer for validation-only operations."""
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
"""Not implemented as this is a validation-only serializer."""
|
||||||
|
raise NotImplementedError(f"{self.__class__.__name__} is validation-only")
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
"""Not implemented as this is a validation-only serializer."""
|
||||||
|
raise NotImplementedError(f"{self.__class__.__name__} is validation-only")
|
||||||
|
|
||||||
|
|
||||||
|
class StartRecordingSerializer(BaseValidationOnlySerializer):
|
||||||
"""Validate start recording requests."""
|
"""Validate start recording requests."""
|
||||||
|
|
||||||
mode = serializers.ChoiceField(
|
mode = serializers.ChoiceField(
|
||||||
@@ -192,30 +206,14 @@ class StartRecordingSerializer(serializers.Serializer):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
def create(self, validated_data):
|
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("StartRecordingSerializer is validation-only")
|
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
class RequestEntrySerializer(BaseValidationOnlySerializer):
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("StartRecordingSerializer is validation-only")
|
|
||||||
|
|
||||||
|
|
||||||
class RequestEntrySerializer(serializers.Serializer):
|
|
||||||
"""Validate request entry data."""
|
"""Validate request entry data."""
|
||||||
|
|
||||||
username = serializers.CharField(required=True)
|
username = serializers.CharField(required=True)
|
||||||
|
|
||||||
def create(self, validated_data):
|
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("RequestEntrySerializer is validation-only")
|
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
class ParticipantEntrySerializer(BaseValidationOnlySerializer):
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("RequestEntrySerializer is validation-only")
|
|
||||||
|
|
||||||
|
|
||||||
class ParticipantEntrySerializer(serializers.Serializer):
|
|
||||||
"""Validate participant entry decision data."""
|
"""Validate participant entry decision data."""
|
||||||
|
|
||||||
participant_id = serializers.CharField(required=True)
|
participant_id = serializers.CharField(required=True)
|
||||||
@@ -229,38 +227,14 @@ class ParticipantEntrySerializer(serializers.Serializer):
|
|||||||
raise serializers.ValidationError("Invalid UUID hex format") from e
|
raise serializers.ValidationError("Invalid UUID hex format") from e
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def create(self, validated_data):
|
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("ParticipantEntrySerializer is validation-only")
|
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
class CreationCallbackSerializer(BaseValidationOnlySerializer):
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("ParticipantEntrySerializer is validation-only")
|
|
||||||
|
|
||||||
|
|
||||||
class CreationCallbackSerializer(serializers.Serializer):
|
|
||||||
"""Validate room creation callback data."""
|
"""Validate room creation callback data."""
|
||||||
|
|
||||||
callback_id = serializers.CharField(required=True)
|
callback_id = serializers.CharField(required=True)
|
||||||
|
|
||||||
def create(self, validated_data):
|
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("CreationCallbackSerializer is validation-only")
|
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("CreationCallbackSerializer is validation-only")
|
|
||||||
|
|
||||||
|
|
||||||
class RoomInviteSerializer(serializers.Serializer):
|
class RoomInviteSerializer(serializers.Serializer):
|
||||||
"""Validate room invite creation data."""
|
"""Validate room invite creation data."""
|
||||||
|
|
||||||
emails = serializers.ListField(child=serializers.EmailField(), allow_empty=False)
|
emails = serializers.ListField(child=serializers.EmailField(), allow_empty=False)
|
||||||
|
|
||||||
def create(self, validated_data):
|
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("RoomInviteSerializer is validation-only")
|
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
|
||||||
"""Not implemented as this is a validation-only serializer."""
|
|
||||||
raise NotImplementedError("RoomInviteSerializer is validation-only")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user