generated from bisco/codex-bootstrap
feat: add reservation QR retrieval
This commit is contained in:
@@ -10,6 +10,7 @@ from .serializers import (
|
||||
ReservationConfirmSerializer,
|
||||
ReservationCreateResponseSerializer,
|
||||
ReservationCreateSerializer,
|
||||
ReservationQRResponseSerializer,
|
||||
)
|
||||
from .services import (
|
||||
AlreadyConfirmedReservation,
|
||||
@@ -17,8 +18,10 @@ from .services import (
|
||||
InvalidToken,
|
||||
NotEnoughSeats,
|
||||
PerformanceNotAvailable,
|
||||
ReservationNotConfirmed,
|
||||
confirm_reservation_from_token,
|
||||
create_pending_reservation,
|
||||
retrieve_reservation_qr_from_token,
|
||||
)
|
||||
|
||||
|
||||
@@ -87,3 +90,25 @@ def confirm_reservation(request):
|
||||
|
||||
response_serializer = ReservationConfirmResponseSerializer(result)
|
||||
return Response(response_serializer.data)
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
def retrieve_reservation_qr(request):
|
||||
serializer = ReservationConfirmSerializer(data=request.query_params)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
try:
|
||||
result = retrieve_reservation_qr_from_token(serializer.validated_data["token"])
|
||||
except InvalidToken as exc:
|
||||
return Response(
|
||||
{"status": "invalid_token", "detail": str(exc)},
|
||||
status=status.HTTP_404_NOT_FOUND,
|
||||
)
|
||||
except ReservationNotConfirmed as exc:
|
||||
return Response(
|
||||
{"status": "reservation_not_confirmed", "detail": str(exc)},
|
||||
status=status.HTTP_409_CONFLICT,
|
||||
)
|
||||
|
||||
response_serializer = ReservationQRResponseSerializer(result)
|
||||
return Response(response_serializer.data)
|
||||
|
||||
Reference in New Issue
Block a user