Beispiel #1
0
def question(request, qno):
    """Display a question and the form to accept the user's answer"""
    qno = int(qno)
    data = {}
    template = 'question/question.html'
    data['question'] = get_object_or_404(models.Question, qno=qno)
    data['marks'] = functions.get_marks(data['question'])
    data['attempts'] = models.Attempt.objects.filter(question=data['question'],
                                                     player=request.user.profile).order_by('-stamp')

    if request.method == 'GET':
        data['answer_form'] = models.AttemptForm()

    if request.method == 'POST':
        data['answer_form'] = models.AttemptForm(request.POST, request.FILES)
        if data['answer_form'].is_valid():
            form = data['answer_form']
            attempt = form.save(commit=False)
            attempt.player = request.user.profile
            attempt.question = data['question']
            attempt.marks = data['marks']
            attempt.save()
            if functions.is_correct(attempt):  # force a check request
                functions.update_marks(request.user.profile, attempt)
            return redirect('question:question', qno=qno)

    return render(request, template, data)
Beispiel #2
0
def question(request, qno):
    """Display a question and the form to accept the user's answer"""
    qno = int(qno)
    data = {}
    template = 'question/question.html'
    ques = get_object_or_404(models.Question, qno=qno)
    if (is_contest_on() or ques.practice):
        data['question'] = ques
        data['marks'] = data['question'].get_marks()
        data['attempts'] = models.Attempt.\
            objects.filter(question=data['question'],
                           player=request.user.profile).order_by('-stamp')
        if len(data['attempts']) > 0:
            last_correct = data['attempts'][0].correct
        else:
            last_correct = False
        data['last_correct'] = last_correct

        if not ques.has_been_answered(request.user):
            # Only if the question is yet to be answered, say yes
            if request.method == 'GET':
                data['answer_form'] = functions.get_attempt_form(
                    ques, request.user.profile)
            if request.method == 'POST':
                data['answer_form'] = models.AttemptForm(
                    request.POST, request.FILES)
                if data['answer_form'].is_valid():
                    form = data['answer_form']
                    attempt = form.save(commit=False)
                    attempt.player = request.user.profile
                    attempt.question = data['question']
                    attempt.marks = data['marks']
                    attempt.save()
                    if attempt.is_correct():  # force a check request
                        functions.update_marks(request.user.profile, attempt)
                    return redirect('question:question', qno=qno)

    return render(request, template, data)
Beispiel #3
0
def question(request, qno):
    """Display a question and the form to accept the user's answer"""
    qno = int(qno)
    data = {}
    template = 'question/question.html'
    ques = get_object_or_404(models.Question, qno=qno)
    if (is_contest_on() or ques.practice):
        data['question'] = ques
        data['marks'] = data['question'].get_marks()
        data['attempts'] = models.Attempt.\
            objects.filter(question=data['question'],
                           player=request.user.profile).order_by('-stamp')
        if len(data['attempts']) > 0:
            last_correct = data['attempts'][0].correct
        else:
            last_correct = False
        data['last_correct'] = last_correct

        if not ques.has_been_answered(request.user):
            # Only if the question is yet to be answered, say yes
            if request.method == 'GET':
                data['answer_form'] = functions.get_attempt_form(
                    ques, request.user.profile)
            if request.method == 'POST':
                data['answer_form'] = models.AttemptForm(
                    request.POST, request.FILES)
                if data['answer_form'].is_valid():
                    form = data['answer_form']
                    attempt = form.save(commit=False)
                    attempt.player = request.user.profile
                    attempt.question = data['question']
                    attempt.marks = data['marks']
                    attempt.save()
                    if attempt.is_correct():  # force a check request
                        functions.update_marks(request.user.profile, attempt)
                    return redirect('question:question', qno=qno)

    return render(request, template, data)