1
1
from django .http import HttpResponse , JsonResponse
2
+ from django .core .exceptions import ValidationError
2
3
from django .views .decorators .csrf import csrf_exempt
3
4
from rest_framework .parsers import JSONParser
4
5
from rest_framework .response import Response
@@ -18,10 +19,15 @@ class SubmissionList(generics.GenericAPIView):
18
19
19
20
def post (self , request ):
20
21
data = request .data
22
+ print (data )
23
+ print (data ["question" ])
21
24
try :
22
25
question = Question .objects .get (pk = data ["question" ])
23
26
except Question .DoesNotExist :
24
- return HttpResponse (status = 500 )
27
+ return Response (
28
+ {"data" : {}, "errors" : "Invalid ID" },
29
+ status = status .HTTP_500_INTERNAL_SERVER_ERROR ,
30
+ )
25
31
26
32
# Need to check if submission exists before creating one
27
33
try :
@@ -40,7 +46,9 @@ def post(self, request):
40
46
41
47
serializer = SubmissionSerializer (submission )
42
48
43
- return Response (data = serializer .data , status = 200 )
49
+ return Response (
50
+ {"data" : serializer .data , "errors" : {}}, status = status .HTTP_200_OK
51
+ )
44
52
except Submission .DoesNotExist :
45
53
data ["attempts" ] = 1
46
54
@@ -50,10 +58,22 @@ def post(self, request):
50
58
data ["correct" ] = False
51
59
52
60
serializer = SubmissionSerializer (data = data )
53
- if serializer .is_valid ():
54
- serializer .save ()
55
- return Response (data = serializer .data , status = 201 )
56
- return Response (data = serializer .errors , status = 400 )
61
+ try :
62
+ if serializer .is_valid ():
63
+ serializer .save ()
64
+ return Response (
65
+ {"data" : serializer .data , "errors" : {}},
66
+ status = status .HTTP_201_CREATED ,
67
+ )
68
+ except ValidationError :
69
+ return Response (
70
+ {"data" : {}, "errors" : "Invalid Email." },
71
+ status = status .HTTP_500_INTERNAL_SERVER_ERROR ,
72
+ )
73
+ return Response (
74
+ {"data" : serializer .data , "errors" : "Invalid Input." },
75
+ status = status .HTTP_200_OK ,
76
+ )
57
77
58
78
59
79
class QuestionList (generics .ListAPIView ):
0 commit comments