home page + opus result api working again

This commit is contained in:
2026-05-10 00:17:20 +02:00
parent 07f5c76a52
commit 19cc52c9f8
9 changed files with 459 additions and 36 deletions
+30 -24
View File
@@ -1,30 +1,36 @@
from collections import defaultdict
from django.http import HttpRequest
from ninja import Router
from accounts.models import CustomUser
from animations.schemas import RankingSchema
from submissions.models import PuzzleResponse, SteamCollectionItem
router = Router()
# @router.get("results", response=RankingSchema)
# def results(request: HttpRequest) -> dict:
# responses_by_userid = defaultdict(list)
# responses_by_puzzleid = defaultdict(list)
#
# for response in list(
# PuzzleResponse.objects.filter(needs_manual_validation=False)
# .filter_user_best_response()
# .prefetch_related("submission__user")
# ):
# responses_by_userid[response.submission.user.id].append(response)
# responses_by_puzzleid[response.puzzle.id].append(response)
#
# ranking = {}
#
# for puzzle_id, responses in responses_by_puzzleid.items():
# ranking[puzzle_id] = sorted(responses, key=lambda x: x.rank_points)
#
# return {
# "users": CustomUser.objects.filter(pk__in=responses_by_userid.keys()),
# "puzzles": SteamCollectionItem.objects.all(),
# "responses_by_userid": responses_by_userid,
# "ranking_by_puzzle": ranking,
# }
@router.get("results", response=RankingSchema)
def results(request: HttpRequest) -> dict:
responses_by_userid = defaultdict(list)
responses_by_puzzleid = defaultdict(list)
for response in list(
PuzzleResponse.objects.filter(needs_manual_validation=False)
.filter_user_best_response()
.prefetch_related("submission__user")
):
responses_by_userid[response.submission.user.id].append(response)
responses_by_puzzleid[response.puzzle.id].append(response)
ranking = {}
for puzzle_id, responses in responses_by_puzzleid.items():
ranking[puzzle_id] = sorted(responses, key=lambda x: x.rank_points)
return {
"users": CustomUser.objects.filter(pk__in=responses_by_userid.keys()),
"puzzles": SteamCollectionItem.objects.all(),
"responses_by_userid": responses_by_userid,
"ranking_by_puzzle": ranking,
}
+2 -2
View File
@@ -14,8 +14,8 @@ class PuzzleResponseRankingOut(ModelSchema):
"updated_at",
]
points: int
rank_points: int
points: int | None = None
rank_points: int | None = None
puzzle_user_rank: int
user_response_rank: int