generated from bisco/codex-bootstrap
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
from rest_framework import serializers
|
|
|
|
|
|
class StrictSerializer(serializers.Serializer):
|
|
def validate(self, attrs):
|
|
unknown_fields = set(self.initial_data) - set(self.fields)
|
|
if unknown_fields:
|
|
raise serializers.ValidationError(
|
|
{field: ["Unexpected field."] for field in sorted(unknown_fields)}
|
|
)
|
|
return attrs
|
|
|
|
|
|
class ReservationCreateSerializer(StrictSerializer):
|
|
name = serializers.CharField(max_length=200, trim_whitespace=True)
|
|
email = serializers.EmailField()
|
|
phone = serializers.CharField(max_length=40, trim_whitespace=True, required=False, allow_blank=True)
|
|
party_size = serializers.IntegerField(min_value=1)
|
|
notes = serializers.CharField(trim_whitespace=True, required=False, allow_blank=True)
|
|
|
|
|
|
class ReservationCreateResponseSerializer(serializers.Serializer):
|
|
id = serializers.IntegerField()
|
|
status = serializers.CharField()
|
|
performance = serializers.IntegerField(source="performance_id")
|
|
party_size = serializers.IntegerField()
|
|
message = serializers.CharField()
|
|
|
|
|
|
class ReservationConfirmSerializer(StrictSerializer):
|
|
token = serializers.CharField(trim_whitespace=True, allow_blank=False)
|
|
|
|
|
|
class ReservationConfirmResponseSerializer(serializers.Serializer):
|
|
reservation_id = serializers.IntegerField(source="reservation.id")
|
|
status = serializers.CharField(source="reservation.status")
|
|
party_size = serializers.IntegerField(source="reservation.party_size")
|
|
qr_code_url = serializers.CharField()
|
|
qr_code_image = serializers.CharField()
|