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")