generated from bisco/codex-bootstrap
feat: add booking REST API
This commit is contained in:
41
backend/bookings/serializers.py
Normal file
41
backend/bookings/serializers.py
Normal file
@@ -0,0 +1,41 @@
|
||||
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.SerializerMethodField()
|
||||
|
||||
def get_qr_code_url(self, result):
|
||||
return f"/api/reservations/{result.reservation.id}/qr-code/"
|
||||
Reference in New Issue
Block a user