def contestuserlist(request,contest_id): user = request.user if user.is_anonymous(): return render_to_response('userprofile/login.html', {'user':user}) userprofile = user.get_profile() contest=Contest.objects.get(id__exact=contest_id) if not userpermitcontest(user,contest): return render_to_response('message.html',{'message':u'非公开比赛','user':user,'userprofile':userprofile}) contestusers=ContestUser.objects.filter(contest__exact=contest.id) c=RequestContext(request, {'user':user,'userprofile':userprofile,'contestusers':contestusers,'contest':contest}) return render_to_response('contest/contestuser_list.html', c )
def contest_detail(request, contest_id): user=request.user contest = Contest.objects.get(id__exact = contest_id) now = datetime.datetime.now() if userpermitcontest(user, contest) and now > contest.start_time and now < contest.end_time: userprofile = user.get_profile() c=RequestContext(request, {'user':user,'userprofile':userprofile,'contest':contest}) return render_to_response('contest/contest_detail.html', c) else: errors = {'Permission not allowed':''} return render_to_response('errors.html', RequestContext(request, {'errors':errors}))
def contest_login(request, contest_id): user=request.user contest = Contest.objects.get(id__exact = contest_id) now = datetime.datetime.now() if userpermitcontest(user, contest) and now > contest.start_time and now < contest.end_time: userprofile = user.get_profile() userprofile.incontest = True userprofile.contest=contest try: contestuser = ContestUser.objects.get(userprofile__exact=userprofile.id,contest__exact = contest.id) except ContestUser.DoesNotExist: contestuser = ContestUser(userprofile=userprofile,contest=contest) contestuser.save() # userprofile.contestuser=contestuser userprofile.save() c=RequestContext(request, {'user':user,'userprofile':userprofile,'contest':contest}) return render_to_response('contest/contest_detail.html', c) else: return render_to_response('message.html',{'message':u'不能参加比赛','user':user})
def problemsubmit(request, problemid): if not request.user.is_authenticated(): errors = {u'请先登录':''} return render_to_response('errors.html',RequestContext(request, {'errors': errors})) user=request.user userprofile=user.get_profile() problem = Problem.objects.get(id__exact=problemid) submittime = datetime.datetime.now() if not userpermitproblem(user, problem): errors = {u'Permission not allowed':''} return render_to_response('errors.html',RequestContext(request, {'errors': errors})) if(request.POST): submit_user= User.objects.get(id__exact=request.REQUEST['user']) sourcecode = request.REQUEST['sourcecode'] language = request.REQUEST['language'] incontest = request.REQUEST['incontest'] if userprofile.incontest: try: contest=Contest.objects.get(id__exact = incontest) except: return render_to_response('message.html',{'message':u'提交失败,本题为比赛题目','user':user,'userprofile':userprofile}) if contest!=userprofile.contest: return render_to_response('message.html',{'message':u'提交失败,不要更改比赛','user':user,'userprofile':userprofile}) if not userpermitcontest(user, contest): return render_to_response('message.html',{'message':u'提交失败,你不能参加比赛','user':user,'userprofile':userprofile}) if submittime < contest.start_time or submittime > contest.end_time: return render_to_response('message.html',{'message':u'提交失败,比赛已经结束','user':user,'userprofile':userprofile}) elif len(incontest)>0: return render_to_response('message.html',{'message':u'提交失败,本题非比赛题目','user':user,'userprofile':userprofile}) if submit_user != user : return render_to_response('message.html',{'message':u'提交失败,请用自己的帐户提交','user':user,'userprofile':userprofile}) else: new_judge = Judge() new_judge.user = user new_judge.problem = problem new_judge.language = language new_judge.sourcecode = sourcecode new_judge.submittime = submittime new_judge.result = 'WAIT' new_judge.result_detail = '' if userprofile.incontest: new_judge.incontest = Contest.objects.get(id__exact = incontest) contestuser=ContestUser.objects.get(userprofile__exact=userprofile.id,contest__exact=contest.id) contestuser.submit_counts +=1 contestuser.save() user.get_profile().submit_counts +=1 user.get_profile().save() problem.submit_counts += 1 problem.save() new_judge.save() return render_to_response('problem/problemsubmitresult.html',RequestContext(request, {})) else: userprofile = request.user.get_profile() if userprofile.incontest: contest = userprofile.contest new_judge = {'user':user.id,'problem':problem.id,'language':'c','incontest':contest.id} else: new_judge = {'user':user.id,'problem':problem.id,'language':'c'} form = JudgeForm(new_judge) c=RequestContext(request, {'form':form,'user':request.user,'userprofile':userprofile}) return render_to_response('problem/problemsubmit.html',c)