Exemple #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')
Exemple #2
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)
Exemple #3
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
Exemple #4
0
def submission(request, challenge_id):
    if request.user.id == None:
        return HttpResponse('Please log in.')
    if request.method == 'POST':
        try:
            requestpost = request.POST['choice']
        except:
            return HttpResponse('Please select a language.')
        c = Challenge.objects.get(pk=challenge_id)
        input = request.POST.get('your_solution', None)
        user = User.objects.get(pk=request.user.id)
        s = Submission()
        s.challenge = c
        l = Language.objects.get(pk=request.POST['choice'])
        s.language = l
        s.user = user
        s.timestamp = datetime.datetime.now()
        if c.ans == input:
            # check if never solved
            solve = Submission.objects.filter(user__id=request.user.id).filter(
                challenge__id=challenge_id).filter(result='AC')

            if not solve.exists():
                challengeTopics = ChallengeTopic.objects.all().filter(
                    challenge_id=c.id)
                for ct in challengeTopics:
                    t = Topic.objects.get(pk=ct.topic_id)
                    tr, created = TopicRating.objects.get_or_create(
                        topic=t,
                        user=user,
                        defaults={
                            'rating': 0,
                            'timestamp': datetime.datetime.now(),
                        })
                    if created:
                        tr.rating = 0
                    tr.rating += c.difficulty * ct.weight
                    tr.save()

            if not solve.filter(language__id=l.id).exists():
                lr, created = LanguageRating.objects.get_or_create(
                    language=l,
                    user=user,
                    defaults={
                        'rating': 0,
                        'timestamp': datetime.datetime.now()
                    })
                if created:
                    lr.rating = 0
                lr.rating += c.difficulty
                lr.save()

            s.result = 'AC'
            s.save()
            return redirect('correct/')
        else:
            s.result = 'WA'
            s.save()
            return HttpResponse('You are wrong!')
    else:
        return HttpResponse("Something's wrong.")