修改rank页面时间格式 hh:mm:ss,修改rank页面时间格式 hh:mm:ss,ContestSubmission中时间以秒计

This commit is contained in:
sxw@401
2015-09-13 21:31:38 +08:00
parent 34f886d990
commit 86c70eb8bd
4 changed files with 22 additions and 11 deletions

View File

@@ -90,7 +90,7 @@ 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 用时以秒计
ac_time = models.IntegerField(default=0) ac_time = models.IntegerField(default=0)
# 总的时间用于acm 类型的,也需要保存罚时 # 总的时间用于acm 类型的,也需要保存罚时
total_time = models.IntegerField(default=0) total_time = models.IntegerField(default=0)

View File

@@ -392,6 +392,19 @@ def _cmp(x, y):
return -1 return -1
def get_the_time_format(seconds):
result = str(seconds % 60)
if seconds % 60 < 10:
result = "0" + result
result = str((seconds % 3600) / 60) + ":" + result
if (seconds % 3600) / 60 < 10:
result = "0" + result
result = str(seconds / 3600) + ":" + result
if seconds / 3600 < 10:
result = "0" + result
return result
@check_user_contest_permission @check_user_contest_permission
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)
@@ -410,17 +423,17 @@ def contest_rank_page(request, contest_id):
try: try:
status = submissions.get(problem=problem) status = submissions.get(problem=problem)
result[i]["problems"].append({ result[i]["problems"].append({
"first_achieved":status.first_achieved, "first_achieved": status.first_achieved,
"ac": status.ac, "ac": status.ac,
"failed_number": status.total_submission_number, "failed_number": status.total_submission_number,
"ac_time": status.ac_time}) "ac_time": get_the_time_format(status.ac_time)})
if status.ac: if status.ac:
result[i]["problems"][-1]["failed_number"] -= 1 result[i]["problems"][-1]["failed_number"] -= 1
except ContestSubmission.DoesNotExist: except ContestSubmission.DoesNotExist:
result[i]["problems"].append({}) result[i]["problems"].append({})
result[i]["total_ac"] = submissions.filter(ac=True).count() result[i]["total_ac"] = submissions.filter(ac=True).count()
result[i]["username"] = User.objects.get(id=result[i]["user_id"]).username result[i]["username"] = User.objects.get(id=result[i]["user_id"]).username
result[i]["total_time"] = submissions.filter(ac=True).aggregate(total_time=Sum("total_time"))["total_time"] result[i]["total_time"] = get_the_time_format(submissions.filter(ac=True).aggregate(total_time=Sum("total_time"))["total_time"])
result = sorted(result, cmp=_cmp, reverse=True) result = sorted(result, cmp=_cmp, reverse=True)
r.set("contest_rank_" + contest_id, json.dumps(list(result))) r.set("contest_rank_" + contest_id, json.dumps(list(result)))
else: else:

View File

@@ -71,7 +71,7 @@ class MessageQueue(object):
contest_problem.total_accepted_number += 1 contest_problem.total_accepted_number += 1
else: else:
# 如果这个提交是错误的就罚时20分钟 # 如果这个提交是错误的就罚时20分钟
contest_submission.total_time += 20 contest_submission.total_time += 1200
contest_submission.total_submission_number += 1 contest_submission.total_submission_number += 1
contest_submission.save() contest_submission.save()
contest_problem.save() contest_problem.save()
@@ -79,13 +79,13 @@ class MessageQueue(object):
# 第一次提交 # 第一次提交
is_ac = submission.result == result["accepted"] is_ac = submission.result == result["accepted"]
if is_ac: if is_ac:
total_time = int((submission.create_time - contest.start_time).total_seconds() / 60) total_time = int((submission.create_time - contest.start_time).total_seconds())
# 增加题目总的ac数计数器 # 增加题目总的ac数计数器
contest_problem.total_accepted_number += 1 contest_problem.total_accepted_number += 1
contest_problem.save() contest_problem.save()
else: else:
# 没过罚时20分钟 # 没过罚时20分钟
total_time = 20 total_time = 1200
ContestSubmission.objects.create(user_id=submission.user_id, contest=contest, problem=contest_problem, ContestSubmission.objects.create(user_id=submission.user_id, contest=contest, problem=contest_problem,
ac=is_ac, total_time=total_time) ac=is_ac, total_time=total_time)

View File

@@ -47,12 +47,10 @@
<th scope="row">{{ forloop.counter }}</th> <th scope="row">{{ forloop.counter }}</th>
<td>{{ item.username }}</td> <td>{{ item.username }}</td>
<td>{{ item.total_ac }} / {{ item.total_submit }}</td> <td>{{ item.total_ac }} / {{ item.total_submit }}</td>
<td>{% if item.total_time %}{{ item.total_time }} min{% else %}--{% endif %}</td> <td>{% if item.total_time %}{{ item.total_time }}{% else %}--{% endif %}</td>
{% for problem in item.problems %} {% for problem in item.problems %}
<td class="{% if problem %}{% if problem.ac %}{% if problem.first_achieve %}first-achieved{% else %}alert-success{% endif %}{% else %}alert-danger{% endif %}{% endif %}"> <td class="{% if problem %}{% if problem.ac %}{% if problem.first_achieve %}first-achieved{% else %}alert-success{% endif %}{% else %}alert-danger{% endif %}{% endif %}">
{% if problem.ac %} {% if problem.ac %}{{ problem.ac_time }}{% endif %}
{{ problem.ac_time }}min
{% endif %}
{% if problem.failed_number %} {% if problem.failed_number %}
(-{{ problem.failed_number }}) (-{{ problem.failed_number }})
{% endif %} {% endif %}