From 64330ffd4e06c5c258f5515ab267e025dc3bc426 Mon Sep 17 00:00:00 2001 From: ExpMango Date: Sat, 15 Dec 2018 21:30:25 +0800 Subject: [PATCH] filter VirtualP in Contest ranklist --- contest/views/oj.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/contest/views/oj.py b/contest/views/oj.py index ce35ea31..921b896c 100644 --- a/contest/views/oj.py +++ b/contest/views/oj.py @@ -99,6 +99,17 @@ class ContestAccessAPI(APIView): class ContestRankAPI(APIView): + # filter root or *{username} + + def realrank_filter(self, page_qs): + rank_cnt = 1 + for t in page_qs["results"]: + if t["user"]["username"][0] == '*': + t["rank"] = '*' + else: + t["rank"] = rank_cnt + rank_cnt = rank_cnt + 1 + def get_rank(self): if self.contest.rule_type == ContestRuleType.ACM: return ACMContestRank.objects.filter(contest=self.contest, @@ -185,9 +196,9 @@ class ContestRankAPI(APIView): page_qs = self.paginate_data(request, qs) page_qs["results"] = serializer(page_qs["results"], many=True, is_contest_admin=is_contest_admin).data + self.realrank_filter(page_qs) return self.success(page_qs) - class ContestGetSimilarAPI(APIView): def get(self, request): contest_id = request.GET.get("contest_id")