chore(backend): improvements

This commit is contained in:
ITQ
2025-04-08 00:37:39 +03:00
parent ad0e795250
commit 9c121af053
15 changed files with 174 additions and 47 deletions
+1
View File
@@ -34,6 +34,7 @@ class UserSchema(ModelSchema):
model = User
fields = ["id", "avatar", "email", "username", "created_at"]
class StatSchema(Schema):
total_attempts: int
solved_tasks: int
+7 -7
View File
@@ -1,11 +1,10 @@
from datetime import datetime
from http import HTTPStatus as status
from django.db.models import Count, Q
from apps.user.models import User
from django.contrib.auth.hashers import check_password, make_password
from django.db.models import Count, Q
from django.shortcuts import get_object_or_404
from ninja import Router, File
from ninja import Router
from ninja.errors import AuthenticationError
from api.v1.auth import BearerAuth
@@ -118,20 +117,21 @@ def get_my_stat(request):
total_attempts=len(user_submissions), solved_tasks=success_attempts_cnt
)
@router.get(
"leaderboard",
auth=None,
response={
status.OK: list[UserSchema],
}
},
)
def get_leaderboard(request):
leaderboard = User.objects.annotate(
checked_count=Count(
'competitiontasksubmission',
filter=Q(competitiontasksubmission__status='checked')
"competitiontasksubmission",
filter=Q(competitiontasksubmission__status="checked"),
)
).order_by('-checked_count')
).order_by("-checked_count")
top_10 = leaderboard[:10]
return status.OK, top_10