From 020d17a75a8a89374f09c40405041a3233b6eb2e Mon Sep 17 00:00:00 2001 From: virusdefender Date: Thu, 19 May 2016 14:29:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0*=E5=BC=80=E5=A4=B4=E7=9A=84?= =?UTF-8?q?=E9=98=9F=E4=BC=8D=E4=B8=8D=E5=8F=82=E4=B8=8E=E6=8E=92=E5=90=8D?= =?UTF-8?q?=E7=9A=84=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contest/views.py | 11 +++++++++++ template/src/oj/contest/contest_rank.html | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/contest/views.py b/contest/views.py index 05ae1dc..8f380dc 100644 --- a/contest/views.py +++ b/contest/views.py @@ -455,6 +455,12 @@ def _get_rank(contest_id): order_by("-total_ac_number", "total_time"). \ values("id", "user__id", "user__username", "user__real_name", "user__userprofile__student_id", "contest_id", "submission_info", "total_submission_number", "total_ac_number", "total_time") + rank_number = 1 + for item in rank: + # 只有有ac的题目而且不是打星的队伍才参与排名 + if item["total_ac_number"] > 0 and item["user__username"][0] != "*": + item["rank_number"] = rank_number + rank_number += 1 return rank @@ -478,6 +484,11 @@ def contest_rank_page(request, contest_id): else: rank = json.loads(rank) + # 2016-05-19 增加了缓存项目,以前的缓存主动失效 + if "rank_number" not in rank[0]: + rank = _get_rank(contest_id) + r.set(cache_key, json.dumps([dict(item) for item in rank])) + return render(request, "oj/contest/contest_rank.html", {"rank": rank, "contest": contest, "contest_problems": contest_problems, diff --git a/template/src/oj/contest/contest_rank.html b/template/src/oj/contest/contest_rank.html index b701a49..8dcdc4f 100644 --- a/template/src/oj/contest/contest_rank.html +++ b/template/src/oj/contest/contest_rank.html @@ -47,7 +47,7 @@ {% for item in rank %} - {% if item.total_ac_number %}{{ forloop.counter}}{% else %}-{% endif %} + {% if item.rank_number %}{{ item.rank_number }}{% else %}-{% endif %} {{ item.user__username }}