mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-11-04 14:49:58 +08:00
比赛排名页面提示错误的次数和 AC 的时间
This commit is contained in:
parent
7b8079f4be
commit
fbeb745530
19
contest/migrations/0007_contestsubmission_ac_time.py
Normal file
19
contest/migrations/0007_contestsubmission_ac_time.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('contest', '0006_merge'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='contestsubmission',
|
||||||
|
name='ac_time',
|
||||||
|
field=models.IntegerField(default=0),
|
||||||
|
),
|
||||||
|
]
|
||||||
@ -84,6 +84,8 @@ class ContestSubmission(models.Model):
|
|||||||
total_submission_number = models.IntegerField(default=1)
|
total_submission_number = models.IntegerField(default=1)
|
||||||
# 这道题是 AC 还是没过
|
# 这道题是 AC 还是没过
|
||||||
ac = models.BooleanField()
|
ac = models.BooleanField()
|
||||||
|
# ac 用时
|
||||||
|
ac_time = models.IntegerField(default=0)
|
||||||
# 总的时间,用于acm 类型的,也需要保存罚时
|
# 总的时间,用于acm 类型的,也需要保存罚时
|
||||||
total_time = models.IntegerField(default=0)
|
total_time = models.IntegerField(default=0)
|
||||||
|
|
||||||
|
|||||||
@ -402,8 +402,8 @@ 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.filter(contest=contest).values("user_id").annotate(
|
result = ContestSubmission.objects.filter(contest=contest).values("user_id").\
|
||||||
total_submit=Sum("total_submission_number"))
|
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"], contest_id=contest_id)
|
submissions = ContestSubmission.objects.filter(user_id=result[i]["user_id"], contest_id=contest_id)
|
||||||
|
|||||||
@ -60,11 +60,12 @@ class MessageQueue(object):
|
|||||||
# 避免这道题已经 ac 了,但是又重新提交了一遍
|
# 避免这道题已经 ac 了,但是又重新提交了一遍
|
||||||
if not contest_submission.ac:
|
if not contest_submission.ac:
|
||||||
# 这种情况是这个题目前处于错误状态,就使用已经存储了的罚时加上这道题的实际用时
|
# 这种情况是这个题目前处于错误状态,就使用已经存储了的罚时加上这道题的实际用时
|
||||||
logger.debug(contest.start_time)
|
# logger.debug(contest.start_time)
|
||||||
logger.debug(submission.create_time)
|
# logger.debug(submission.create_time)
|
||||||
logger.debug((submission.create_time - contest.start_time).total_seconds())
|
# logger.debug((submission.create_time - contest.start_time).total_seconds())
|
||||||
logger.debug(int((submission.create_time - contest.start_time).total_seconds() / 60))
|
# logger.debug(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_time = int((submission.create_time - contest.start_time).total_seconds() / 60)
|
||||||
|
contest_submission.total_time += contest_submission.ac_time
|
||||||
# 标记为已经通过
|
# 标记为已经通过
|
||||||
contest_submission.ac = True
|
contest_submission.ac = True
|
||||||
# contest problem ac 计数器加1
|
# contest problem ac 计数器加1
|
||||||
|
|||||||
@ -33,8 +33,14 @@ def get_contest_submission_problem_detail(contest_problem, my_submission):
|
|||||||
if contest_problem.id in my_submission:
|
if contest_problem.id in my_submission:
|
||||||
submission = my_submission[contest_problem.id]
|
submission = my_submission[contest_problem.id]
|
||||||
if submission.ac:
|
if submission.ac:
|
||||||
return u"\n 时间: " + str(submission.total_time) + u" min"
|
# 只提交了一次就AC
|
||||||
return ""
|
if submission.total_submission_number == 1:
|
||||||
|
return str(submission.ac_time) + " min"
|
||||||
|
else:
|
||||||
|
return "20 min × " + str(submission.total_submission_number - 1) + " WA + " + str(submission.ac_time) + " min"
|
||||||
|
return str(submission.total_submission_number) + " WA"
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
def get_submission_problem_result_class(contest_problem, my_submission):
|
def get_submission_problem_result_class(contest_problem, my_submission):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user