Example #1
0
def submitProblem(request):
    problem_id = request.GET.get('problem_id')
    try:  #判断目标问题是否存在
        problem = Problem.objects.get(id=problem_id)
    except:
        return redirect('/problems')
    if not request.user.is_authenticated:  #用户未登录
        return redirect('/login')
    else:  #用户已登录
        if not problem.visible and not request.user.is_staff:  #问题不可见且用户不是管理员
            return redirect('/problems')
        else:  #问题可见或用户是管理员
            if request.method == "POST":  #POST请求
                submission = Submission()
                submission.myuser = MyUser.objects.get(user_id=request.user.id)
                submission.problem = problem
                submission.language = request.POST.get('language')
                submission.code = request.POST.get('code')
                submission.myuser.sub_num += 1
                problem.sub_num += 1
                submission.myuser.save()
                problem.save()
                submission.save()
                test_submission.delay(submission.id)
                return redirect('/status')
            else:  #GET请求
                return render(request, 'problem_submit.html')
Example #2
0
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)
Example #3
0
    def form_valid(self, form):
        self.object = form.save(commit=False)
        sub = Submission()
        sub.code = form.cleaned_data['submission__code']
        sub.language = form.cleaned_data['submission__language']
        sub.user = self.request.user
        sub.problem = self.object.problem.problem
        sub.save()
        sub.judge()
        self.object.submission = sub
        self.object.save()
        # self.object.user = self.request.user

        messages.add_message(self.request, messages.SUCCESS,
                             _('Submit Success'))
        return super(SubmissionCreateView, self).form_valid(form)
Example #4
0
def submit_handler(message):
    print 'submit=================',  message.body
    try:
        mp = json.loads(message.body)
        s = ContestSubmission()
        s.problem = ContestProblem.objects.get(pk=int(mp['problem']))
        sub = Submission()
        sub.code = mp['code']
        sub.language = mp['language']
        sub.problem = s.problem.problem
        sub.user = User.objects.get(pk=int(mp['user']))
        sub.save()
        s.submission = sub
        s.save()
        sub.judge()
    except Exception as ex:
        print ex
    return True