示例#1
0
def question_page(request, question_id):
    try:
        question = Question.objects.filter(valid=True).get(pk=question_id)
    except ObjectDoesNotExist:
        messages.add_message(request,
                             info_messages['question does not exist'][0],
                             info_messages['question does not exist'][1])
        return HttpResponseRedirect(reverse('user_session:login'))

    question_status_obj = QuestionStatus.objects.filter(
        team_id=request.user).filter(question_id=question)
    is_answered = question_if_answered(request, question_id, QuestionStatus,
                                       question)
    if is_answered is not None:
        return is_answered

    #Question not opened
    if len(question_status_obj) == 0:
        qs = QuestionStatus(team_id=request.user,
                            question_id=question,
                            question_status='OP')
        qs.save()

    if question.has_context:
        return HttpResponseRedirect(question_urls[question_id])

    return render(request, QUESTIONS_DIR + question.source_file)
示例#2
0
def submit_answer(request, question_id):
    if request.method == 'POST' and 'answer' in request.POST:
        try:
            question = Question.objects.filter(valid=True).get(pk=question_id)
        except ObjectDoesNotExist:
            return HttpResponse(info_messages['invalid_question'][1])
        question_status_obj = QuestionStatus.objects.filter(
            team_id=request.user).filter(question_id=question)
        #Question Already Answered
        if len(question_status_obj.filter(question_status='AW')) != 0:
            return HttpResponse(info_messages['answered'][1])

        _log = Log.objects.filter(team_id=request.user).filter(
            question_id=question)
        if len(_log) == 0:
            log = Log(
                team_id=request.user,
                question_id=question,
            )
        else:
            log = _log[0]
        log.submission_time = timezone.now()

        #Question Already Opened
        if len(question_status_obj) != 0:
            qs = question_status_obj[0]
        else:
            qs = QuestionStatus(team_id=request.user,
                                question_id=question,
                                question_status='OP')

        answer = request.POST['answer']
        if question.answer == answer:
            log.solved = True
            qs.question_status = 'AW'
            qs.submission_time = timezone.now()
            qs.save()
            team = TeamDetail.objects.filter(team=qs.team_id)[0]
            team.points += qs.question_id.points
            team.save()
            log.save()
            return HttpResponse(info_messages['correct answer'][1])
        else:
            log.count_fail += 1
            qs.submission_time = timezone.now()
            qs.save()
            log.save()
            return HttpResponse(info_messages['incorrect answer'][1])
    return HttpResponse(info_messages['invalid_request'][1])