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
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.")