Beispiel #1
0
 def post(self, request, exam_id, format=None):
     exam = Exam.objects.get(id=exam_id)
     score = 0
     serializer = ExamRecordSerializer(exam, data=request.data)
     if serializer.is_valid():
         for exercise in exam.exercises.all():
             for s in request.data.getlist('exercises'):
                 json_object = re.sub('\'', '\"', s)
                 _exercise = json.loads(json_object)
                 if _exercise.get('id') == exercise.id:
                     if self.check_correct_answer(_exercise,
                        exercise):
                         score += 1
                     else:
                         score += 0
         # Save exam record
         record = ExamRecord(
             exam=exam,
             user=request.user.profile,
             done_time=request.data.get('done_time'),
             score=score
         )
         record.save()
         return Response(score)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Beispiel #2
0
 def post(self, request, exam_id, format=None):
     exam = Exam.objects.get(id=exam_id)
     score = 0
     serializer = ExamAnswerSerializer(exam, data=request.data)
     try:
         exam_record = ExamRecord.objects.get(
             exam=exam,
             user=request.user.profile
         )
     except ExamRecord.DoesNotExist:
         exam_record = ExamRecord(
             exam=exam,
             user=request.user.profile
         )
     exam_record.save()
     if serializer.is_valid():
         for exercise in exam.exercises.all():
             _exercises = request.data.get('exercises').split('&')
             for string in _exercises:
                 id = string.split('|', 1)[0]
                 _exercise = string.split('|', 1)[1]
                 if id == str(exercise.id):
                     if self.check_correct_answer(_exercise,
                        exercise):
                         exercise_score = 1
                     else:
                         exercise_score = 0
                     score += exercise_score
                     exercise_record = ExerciseRecord(
                         exercise=exercise,
                         exam_record=exam_record,
                         user=request.user.profile,
                         score=exercise_score
                     )
                     exercise_record.save()
                     for answer in _exercise.split('|'):
                         user_answer_record = UserAnswerRecord(
                             exercise_record=exercise_record,
                             answer=answer
                         )
                         user_answer_record.save()
         # Save exam record
         exam_record.done_time = request.data.get('done_time')
         exam_record.score = score
         exam_record.save()
         return Response(score)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Beispiel #3
0
 def post(self, request, exam_id, format=None):
     exam = Exam.objects.get(id=exam_id)
     score = 0
     serializer = ExamAnswerSerializer(exam, data=request.data)
     try:
         exam_record = ExamRecord.objects.get(exam=exam,
                                              user=request.user.profile)
     except ExamRecord.DoesNotExist:
         exam_record = ExamRecord(exam=exam, user=request.user.profile)
     exam_record.save()
     if serializer.is_valid():
         for exercise in exam.exercises.all():
             _exercises = request.data.get('exercises').split('&')
             for string in _exercises:
                 id = string.split('|', 1)[0]
                 _exercise = string.split('|', 1)[1]
                 if id == str(exercise.id):
                     if self.check_correct_answer(_exercise, exercise):
                         exercise_score = 1
                     else:
                         exercise_score = 0
                     score += exercise_score
                     exercise_record = ExerciseRecord(
                         exercise=exercise,
                         exam_record=exam_record,
                         user=request.user.profile,
                         score=exercise_score)
                     exercise_record.save()
                     for answer in _exercise.split('|'):
                         user_answer_record = UserAnswerRecord(
                             exercise_record=exercise_record, answer=answer)
                         user_answer_record.save()
         # Save exam record
         exam_record.done_time = request.data.get('done_time')
         exam_record.score = score
         exam_record.save()
         return Response(score)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)