avaaren

Python fdsfsdfs

Mar 17th, 2020
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.31 KB | None | 0 0
  1. def quiz_detail(request, pk):
  2.     quiz_object = get_object_or_404(Quiz, pk=pk)
  3.     current_quiz_object = CurrentQuiz.objects.get_or_create(
  4.         quiz=quiz_object,
  5.         user=request.user,
  6.         is_finished=False
  7.     )[0]
  8.     question_queryset = current_quiz_object.quiz.questions.all()
  9.     total_questions = len(question_queryset)
  10.     current_question_id = current_quiz_object.questions_passed + 1
  11.  
  12.     if current_question_id + 1 > total_questions:
  13.         return redirect(quiz_object.get_absolute_result_url())
  14.  
  15.     if request.method == 'POST':
  16.         response_data = {}
  17.         # мы отправляем сюда ажакс пост запрос и туда кидаем атрибут экшн
  18.         if request.POST.get('action') == 'post':
  19.             # Получаем айди ответа переданный в ажакс и смотрим правильный ли ответ, если да, то...
  20.  
  21.             chosen_answer_id = request.POST.get('chosen_answer_id', None)
  22.             answer = current_quiz_object.quiz.questions.get(
  23.                 pk=current_question_id).answers.get(pk=chosen_answer_id)
  24.  
  25.             if answer.is_correct:
  26.                 current_quiz_object.questions_passed += 1
  27.                 current_quiz_object.total_score += 1
  28.                 response_data['is_correct'] = True
  29.                 response_data['current_question_id'] = current_question_id+1
  30.                 current_quiz_object.save()
  31.             else:
  32.                 current_quiz_object.questions_passed += 1
  33.                 response_data['is_correct'] = False
  34.                 response_data['current_question_id'] = current_question_id + 1
  35.                 current_quiz_object.save()
  36.             return JsonResponse(response_data)
  37.  
  38.     return render(request, 'game/quiz_detail.html', {
  39.         'current_quiz_object': current_quiz_object,
  40.         'question_queryset': question_queryset,
  41.     })
  42.  
  43. # quiz result url view!
  44. class QuizResultView(DetailView):
  45.     model = CurrentQuiz
  46.     context_object_name = 'quiz_result'
  47.     template_name = 'game/quiz_result.html'
  48.  
  49.     def get_object(self):
  50.         pk = self.kwargs.get('pk')
  51.         quiz_object = get_object_or_404(CurrentQuiz, quiz__pk=pk, is_finished=False)
  52.         quiz_object.is_finished = True
  53.         quiz_object.save()
  54.         return quiz_object
Advertisement
Add Comment
Please, Sign In to add comment