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')
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)
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