33from django .views .decorators .http import require_POST
44from django .views .decorators .cache import never_cache
55from django .http import JsonResponse
6-
76from database .models import Attendant
87
8+ from rest_framework .decorators import api_view
9+ from rest_framework .response import Response
10+ from rest_framework import status
11+ from backendapi import exceptions
12+ from .serializers import AttendantAdmin
13+
914
1015@csrf_exempt
1116@require_POST
@@ -18,3 +23,83 @@ def scanned(request, tag: bytes):
1823
1924 except Attendant .DoesNotExist :
2025 return JsonResponse ({"error" : "No such tag" , "valid" : False }, status = 404 )
26+
27+
28+ @api_view (["GET" , "POST" , "PUT" , "PATCH" , "DELETE" ])
29+ def api_get (request , pk = None ):
30+ if request .method == "GET" :
31+ # If there's no 'pk' parameter, return all attendants
32+ if pk is None :
33+ attendants = Attendant .objects .all ()
34+ serializer = AttendantAdmin (attendants , many = True )
35+ return Response (serializer .data , status = status .HTTP_200_OK )
36+ # Otherwise, return a single attendant
37+ try :
38+ attendant = Attendant .objects .get (pk = pk )
39+ serializer = AttendantAdmin (attendant )
40+ return Response (serializer .data , status = status .HTTP_200_OK )
41+ except Attendant .DoesNotExist :
42+ return Response (
43+ {"detail" : "Attendant not found." }, status = status .HTTP_404_NOT_FOUND
44+ )
45+
46+ elif request .method == "POST" :
47+ # Create a new attendant
48+ serializer = AttendantAdmin (data = request .data )
49+ if serializer .is_valid ():
50+ serializer .save () # Save the new attendant to the database
51+ return Response (serializer .data , status = status .HTTP_201_CREATED )
52+ return Response (serializer .errors , status = status .HTTP_400_BAD_REQUEST )
53+
54+ elif request .method == "PUT" :
55+ # Full update of an existing attendant
56+ try :
57+ attendant = Attendant .objects .get (pk = pk )
58+ except Attendant .DoesNotExist :
59+ return Response (
60+ {"detail" : "Attendant not found." }, status = status .HTTP_404_NOT_FOUND
61+ )
62+
63+ serializer = AttendantAdmin (attendant , data = request .data )
64+ if serializer .is_valid ():
65+ serializer .save ()
66+ return Response (serializer .data , status = status .HTTP_200_OK )
67+ return Response (serializer .errors , status = status .HTTP_400_BAD_REQUEST )
68+
69+ elif request .method == "PATCH" :
70+ # Partial update of an existing attendant
71+ try :
72+ attendant = Attendant .objects .get (pk = pk )
73+ except Attendant .DoesNotExist :
74+ return Response (
75+ {"detail" : "Attendant not found." }, status = status .HTTP_404_NOT_FOUND
76+ )
77+
78+ serializer = AttendantAdmin (attendant , data = request .data , partial = True )
79+ if serializer .is_valid ():
80+ serializer .save ()
81+ return Response (serializer .data , status = status .HTTP_200_OK )
82+ return Response (serializer .errors , status = status .HTTP_400_BAD_REQUEST )
83+
84+ elif request .method == "DELETE" :
85+ # Delete an existing attendant
86+ try :
87+ attendant = Attendant .objects .get (pk = pk )
88+ except Attendant .DoesNotExist :
89+ return Response (
90+ {"detail" : "Attendant not found." }, status = status .HTTP_404_NOT_FOUND
91+ )
92+
93+ attendant .delete ()
94+ return Response (
95+ {"detail" : "Attendant deleted successfully." },
96+ status = status .HTTP_204_NO_CONTENT ,
97+ )
98+
99+
100+ """
101+ def api_get(request):
102+ if request.method == "GET":
103+ return Response({"message": "GET request received"}, status=202)
104+ elif request.method == "POST":
105+ return Response({"message": "POST request received"}, status=405) """
0 commit comments