home page + opus result api working again
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user