use user limit instead of accpeted_number

This commit is contained in:
yuetsh
2024-06-12 15:36:17 +08:00
parent 81f128ba35
commit 4a69c3b8f5

View File

@@ -376,18 +376,21 @@ class SessionManagementAPI(APIView):
class UserRankAPI(APIView): class UserRankAPI(APIView):
def get(self, request): def get(self, request):
rule_type = request.GET.get("rule") rule_type = request.GET.get("rule")
username = request.GET.get("username") username = request.GET.get("username", "")
n = request.GET.get("n") try:
if not username: n = int(request.GET.get("n", "0"))
username = "" except ValueError:
n = 0
if rule_type not in ContestRuleType.choices(): if rule_type not in ContestRuleType.choices():
rule_type = ContestRuleType.ACM rule_type = ContestRuleType.ACM
profiles = UserProfile.objects.filter(user__admin_type=AdminType.REGULAR_USER, user__is_disabled=False,\ profiles = UserProfile.objects.filter(user__admin_type=AdminType.REGULAR_USER, user__is_disabled=False,\
user__username__icontains=username).select_related("user") user__username__icontains=username).select_related("user")
if rule_type == ContestRuleType.ACM: 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: else:
profiles = profiles.filter(total_score__gt=0).order_by("-total_score") 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)) return self.success(self.paginate_data(request, profiles, RankInfoSerializer))