Beispiel #1
0
    def test_quiz_completed_datetime_set_on_save(self):
        quiz_form = QuizForm(blank_answers=self.quiz_result.answers.all(),
                             data=self.data)
        quiz_form.is_valid()

        self.assertEqual(None, self.quiz_result.completed)
        quiz_form.save(self.quiz_result)
        self.assertNotEqual(None, self.quiz_result.completed)
Beispiel #2
0
def create_quiz(request):
    if request.method == 'POST':
        form = QuizForm(request.POST or None)
        if form.is_valid():
            form.save()
            return redirect('quiz:quiz-detail', form.instance.id)
    else:
        form = QuizForm()
    context = {'form': form}
    return render(request, 'quiz/create-quiz.html', context)
Beispiel #3
0
    def test_questions_marked_as_answered_on_save(self):
        quiz_form = QuizForm(blank_answers=self.quiz_result.answers.all(),
                             data=self.data)
        quiz_form.is_valid()
        quiz_form.save(self.quiz_result)

        # Note: an unanswered question is represented by None
        answers = self.quiz_result.answers.all()
        for answer in answers:
            self.assertNotEqual(None, answer.correct)
Beispiel #4
0
def index(request):
    add_form = QuizForm()
    new_form = ''
    if request.method == 'POST':
        new_form = QuizForm(request.POST)
        if new_form.is_valid():
            new_form.save(commit=True)
        else:
            print('ERROR FORM INVALID')
    return render(request, 'quiz/home.html', {'add_form': add_form})
Beispiel #5
0
def add_quiz(request):
    if request.method == 'POST':
        form = QuizForm(request.POST)
        if form.is_valid():
            quiz = form.save()
            return redirect('quiz:add_question', quiz.id)
    else:
        form = QuizForm()

    return render(request, 'quiz/add_quiz.html', {'form': form})
Beispiel #6
0
def quiz_update(request, quiz_id):
    """ update the quiz, given its id. """
    quiz = Quiz.objects.get(id=quiz_id)
    if request.method == "POST":
        quiz_form = QuizForm(request.POST, request.FILES, instance=quiz)
        quiz_form.is_update = True
        if quiz_form.is_valid():
            quiz_form.save()
            return HttpResponseRedirect(reverse("quiz.views.quiz_update", args=[quiz_id]))
    else:
        quiz_form = QuizForm(instance=quiz)
        return render_to_response("quiz/update_quiz.html", {
                    "quiz_form": quiz_form,
                    "quizobj": quiz,
                    "selected_button" : "details",
                }, context_instance=RequestContext(request))
    #generic case
    return render_to_response("quiz/update_quiz.html", {
                "quiz_form": quiz_form,
                "selected_button" : "details",
            }, context_instance=RequestContext(request))
Beispiel #7
0
def quiz_update(request, quiz_id=None, template='quiz/quiz_form.html'):
    """ update the quiz, given its quiz-id; and the owner. if quiz is not found, throws 404. """
    """ @todo: 
        done: you can update only a test which you can actually own.
        todo : admin should also be able to edit any piece of data. 
    """
    quiz = get_object_or_404(Quiz, id=quiz_id, owner=request.user,)
    quiz_form = QuizForm(instance=quiz)
    
    if request.method == "POST":
      quiz_form = QuizForm(request.POST, instance=quiz)
      if quiz_form.is_valid():
        quiz_form.save()
        request.user.message_set.create(message="the quiz succesfully updated. yeah! edited.")
        return HttpResponseRedirect(reverse("quiz.views.quiz_update", args=[quiz_id]))
        
    return render_to_response(template, {
                "quizobj": quiz,
                # @todo: must be overridden in the manager.
                "questions" : quiz.quiz_questions.all().order_by('number'),
                "quiz_form": quiz_form,
                "pagetitle" : "Update Test",
                "selected_button" : "details",
            }, context_instance=RequestContext(request))
Beispiel #8
0
def quiz(request, quiz_result_id):
    # Fetch quiz results if they exist and redirect if it has already been taken.
    quiz_result = get_object_or_404(QuizResult, id=quiz_result_id)
    if quiz_result.completed:
        messages.error(request, "This quiz has already been completed")
        return redirect(reverse('home'))

    # Fetch all the blank questions/answers for this quiz, and build the QuizForm
    # based on them.
    blank_answers = quiz_result.answers.all().order_by('id')
    if request.method == 'POST':
        form = QuizForm(blank_answers=blank_answers, data=request.POST)

        if form.is_valid():
            form.save(quiz_result)
            messages.success(request, "Thank you for taking the '{0}' quiz!".format(quiz_result.quiz.name))
            return redirect(reverse('home'))

    else:
        form = QuizForm(blank_answers=blank_answers)

    return render_to_response('quiz/quiz.html',
                               { 'form': form },
                               context_instance=RequestContext(request))
Beispiel #9
0
def quiz_create(request, quiz_id=None, template='quiz/quiz_form.html'):
    """ returns a template to create a new quiz. """
    quiz_form = QuizForm()
    
    if request.method == "POST":
       quiz_form = QuizForm(request.POST)
       if quiz_form.is_valid():
           quiz = quiz_form.save(commit=False)
           quiz.addOwner(request.user).save()
           
           request.user.message_set.create(message="the quiz is successfully created. yeppie! add questions now :D")
           return HttpResponseRedirect(reverse('quiz.views.question_create', args=[quiz.id]))
         
    return render_to_response(template, {
                "quiz_form" : quiz_form,
                "selected_button" : "details",
                "pagetitle" : "Make Test",
            }, context_instance=RequestContext(request))
Beispiel #10
0
def quiz_create(request):
    """ returns a template to create a new quiz. """
    if request.method == "POST":
       quiz_form = QuizForm(request.POST, request.FILES)
       if quiz_form.is_valid():
          new_quiz = quiz_form.save(commit=False)
          new_quiz.save()
          return HttpResponseRedirect(reverse("quiz.views.question_new", args=[new_quiz.id]))
          
    #GET Request
    else:
        quiz_form = QuizForm()
        return render_to_response('quiz/create_quiz.html', {
                    "quiz_form" : quiz_form,
                    "selected_button" : "details",
                }, context_instance=RequestContext(request))
        
    return render_to_response('quiz/create_quiz.html', {
                "quiz_form" : quiz_form,
                "selected_button" : "details",
            }, context_instance=RequestContext(request))