mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-22 00:43:20 +00:00
Merge branch 'for-contest' of https://git.coding.net/virusdefender/qduoj into for-contest-dev
This commit is contained in:
commit
2c6bf1d113
@ -390,10 +390,10 @@ def _cmp(x, y):
|
|||||||
def contest_rank_page(request, contest_id):
|
def contest_rank_page(request, contest_id):
|
||||||
contest = Contest.objects.get(id=contest_id)
|
contest = Contest.objects.get(id=contest_id)
|
||||||
contest_problems = ContestProblem.objects.filter(contest=contest).order_by("sort_index")
|
contest_problems = ContestProblem.objects.filter(contest=contest).order_by("sort_index")
|
||||||
result = ContestSubmission.objects.values("user_id").annotate(total_submit=Count("user_id"))
|
result = ContestSubmission.objects.filter(contest=contest).values("user_id").annotate(total_submit=Sum("total_submission_number"))
|
||||||
for i in range(0, len(result)):
|
for i in range(0, len(result)):
|
||||||
# 这个人所有的提交
|
# 这个人所有的提交
|
||||||
submissions = ContestSubmission.objects.filter(user_id=result[i]["user_id"])
|
submissions = ContestSubmission.objects.filter(user_id=result[i]["user_id"], contest_id=contest_id)
|
||||||
result[i]["submissions"] = {}
|
result[i]["submissions"] = {}
|
||||||
for item in submissions:
|
for item in submissions:
|
||||||
result[i]["submissions"][item.problem_id] = item
|
result[i]["submissions"][item.problem_id] = item
|
||||||
|
@ -52,6 +52,8 @@ class MessageQueue(object):
|
|||||||
try:
|
try:
|
||||||
contest_submission = ContestSubmission.objects.get(user_id=submission.user_id, contest=contest,
|
contest_submission = ContestSubmission.objects.get(user_id=submission.user_id, contest=contest,
|
||||||
problem_id=contest_problem.id)
|
problem_id=contest_problem.id)
|
||||||
|
# 提交次数加1
|
||||||
|
contest_submission.total_submission_number += 1
|
||||||
|
|
||||||
if submission.result == result["accepted"]:
|
if submission.result == result["accepted"]:
|
||||||
|
|
||||||
@ -65,13 +67,10 @@ class MessageQueue(object):
|
|||||||
contest_submission.total_time += int((submission.create_time - contest.start_time).total_seconds() / 60)
|
contest_submission.total_time += int((submission.create_time - contest.start_time).total_seconds() / 60)
|
||||||
# 标记为已经通过
|
# 标记为已经通过
|
||||||
contest_submission.ac = True
|
contest_submission.ac = True
|
||||||
# 提交次数加1
|
|
||||||
contest_submission.total_submission_number += 1
|
|
||||||
# contest problem ac 计数器加1
|
# contest problem ac 计数器加1
|
||||||
contest_problem.total_accepted_number += 1
|
contest_problem.total_accepted_number += 1
|
||||||
else:
|
else:
|
||||||
# 如果这个提交是错误的,就罚时20分钟
|
# 如果这个提交是错误的,就罚时20分钟
|
||||||
contest_submission.ac = False
|
|
||||||
contest_submission.total_time += 20
|
contest_submission.total_time += 20
|
||||||
contest_submission.save()
|
contest_submission.save()
|
||||||
contest_problem.save()
|
contest_problem.save()
|
||||||
|
@ -185,7 +185,11 @@ class TestCaseUploadAPIView(APIView):
|
|||||||
os.mkdir(test_case_dir)
|
os.mkdir(test_case_dir)
|
||||||
for name in l:
|
for name in l:
|
||||||
f = open(test_case_dir + name, "wb")
|
f = open(test_case_dir + name, "wb")
|
||||||
|
try:
|
||||||
f.write(test_case_file.read(name).replace("\r\n", "\n"))
|
f.write(test_case_file.read(name).replace("\r\n", "\n"))
|
||||||
|
except MemoryError:
|
||||||
|
return error_response(u"单个测试数据体积过大!")
|
||||||
|
finally:
|
||||||
f.close()
|
f.close()
|
||||||
l.sort()
|
l.sort()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user