示例#1
0
文件: views.py 项目: hbatyrkhan/mycms
def problem_page(request, contest_pk, problem_pk):
    if request.method == "POST":
        lang = request.POST.get("sub_language")
        source = request.POST.get("sub_source")
        if lang and source:
            sub = Submission(source=source, language=lang)
            sub.participant = request.user.participant_set.get(
                contest__pk=contest_pk)
            sub.sent_date = timezone.now()
            sub.problem = get_object_or_404(Problem, problem_id=problem_pk)
            problem_infos = ProblemInfo.objects.filter(
                problem=get_object_or_404(Problem, problem_id=problem_pk),
                contest__pk=contest_pk)
            if problem_infos:
                sub.problem_info = problem_infos.first()
            sub.contest = Contest.objects.get(pk=contest_pk)
            sub.save()

            evaluate_submission.delay(sub_pk=sub.pk,
                                      username=request.user.username)

            return redirect('problem-page',
                            contest_pk=contest_pk,
                            problem_pk=problem_pk)

    participant = get_object_or_404(Participant, user=request.user)
    contest = get_object_or_404(Contest, pk=contest_pk)
    problem = get_object_or_404(Problem,
                                problem_id=problem_pk,
                                contests=contest)
    submissions = Submission.objects.filter(contest=contest,
                                            problem=problem,
                                            participant=participant)
    subtasks = problem.subtask_set.all()
    total = 0
    for score in subtasks:
        total += score.points

    # print(RunInfo.objects.all().first().submission.source)
    context = {
        'statement': problem.statement,
        'samples': problem.test_set.filter(in_statement=True),
        'contest': contest,
        'problems': contest.problem_set.all(),
        'submissions': submissions,
        'subtasks': subtasks,
        'total': total,
        'username': request.user.username,
    }

    return render(request, 'problem/problem.html', context)