Merge branch 'for-contest' of https://git.coding.net/virusdefender/qduoj into for-contest-dev

This commit is contained in:
hohoTT 2015-09-05 11:45:22 +08:00
commit 2c6bf1d113
3 changed files with 10 additions and 7 deletions

View File

@ -390,10 +390,10 @@ def _cmp(x, y):
def contest_rank_page(request, contest_id):
contest = Contest.objects.get(id=contest_id)
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)):
# 这个人所有的提交
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"] = {}
for item in submissions:
result[i]["submissions"][item.problem_id] = item

View File

@ -52,6 +52,8 @@ class MessageQueue(object):
try:
contest_submission = ContestSubmission.objects.get(user_id=submission.user_id, contest=contest,
problem_id=contest_problem.id)
# 提交次数加1
contest_submission.total_submission_number += 1
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.ac = True
# 提交次数加1
contest_submission.total_submission_number += 1
# contest problem ac 计数器加1
contest_problem.total_accepted_number += 1
else:
# 如果这个提交是错误的就罚时20分钟
contest_submission.ac = False
contest_submission.total_time += 20
contest_submission.save()
contest_problem.save()

View File

@ -185,7 +185,11 @@ class TestCaseUploadAPIView(APIView):
os.mkdir(test_case_dir)
for name in l:
f = open(test_case_dir + name, "wb")
try:
f.write(test_case_file.read(name).replace("\r\n", "\n"))
except MemoryError:
return error_response(u"单个测试数据体积过大!")
finally:
f.close()
l.sort()