From 4a69c3b8f554499b109d2f770aa0630c581f8faa Mon Sep 17 00:00:00 2001 From: yuetsh <51725939@qq.com> Date: Wed, 12 Jun 2024 15:36:17 +0800 Subject: [PATCH] use user limit instead of accpeted_number --- account/views/oj.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/account/views/oj.py b/account/views/oj.py index 5218782..aff7d62 100644 --- a/account/views/oj.py +++ b/account/views/oj.py @@ -376,18 +376,21 @@ class SessionManagementAPI(APIView): class UserRankAPI(APIView): def get(self, request): rule_type = request.GET.get("rule") - username = request.GET.get("username") - n = request.GET.get("n") - if not username: - username = "" + username = request.GET.get("username", "") + try: + n = int(request.GET.get("n", "0")) + except ValueError: + n = 0 if rule_type not in ContestRuleType.choices(): rule_type = ContestRuleType.ACM profiles = UserProfile.objects.filter(user__admin_type=AdminType.REGULAR_USER, user__is_disabled=False,\ user__username__icontains=username).select_related("user") if rule_type == ContestRuleType.ACM: - profiles = profiles.filter(accepted_number__gte=n).order_by("-accepted_number", "submission_number") + profiles = profiles.filter(accepted_number__gte=0).order_by("-accepted_number", "submission_number") else: profiles = profiles.filter(total_score__gt=0).order_by("-total_score") + if n>0: + profiles = profiles[:n] return self.success(self.paginate_data(request, profiles, RankInfoSerializer))