Files
TijdVoorDeTest/tvdt/quiz/views/questionview.py

45 lines
1.4 KiB
Python

from django.contrib import messages
from django.core.exceptions import BadRequest
from django.http import Http404, HttpRequest, HttpResponse
from django.shortcuts import render
from django.utils.translation import gettext as _
from django.views import View
from ..models import Candidate, Answer, GivenAnswer
from ..models.question import NoActiveTestForSeason
class QuestionView(View):
template_name = "quiz/question.html"
def get(
self, request: HttpRequest, candidate: Candidate, *args, **kwargs
) -> HttpResponse:
try:
question = candidate.get_next_question(candidate)
except NoActiveTestForSeason:
messages.error(request, _("No active Quiz for season"))
raise Http404("No active Quiz for seaon")
return render(
request,
"quiz/question.html",
{"candidate": candidate, "question": question},
)
def post(self, request: HttpRequest, candidate: Candidate, *args, **kwargs):
answer_id = request.POST.get("answer")
if answer_id == None:
raise BadRequest
try:
answer = Answer.objects.get(id=answer_id)
except Answer.DoesNotExist:
raise BadRequest
GivenAnswer.objects.create(
candidate=candidate, question=answer.question, answer=answer
)
return self.get(request, candidate, args, kwargs)