feat: add reservation QR retrieval

This commit is contained in:
2026-04-29 10:59:47 +02:00
parent 0c679391ed
commit 635a9a5c63
7 changed files with 124 additions and 6 deletions

View File

@@ -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)