feat(api): add cache + busting for admin

This commit is contained in:
2026-05-10 04:00:53 +02:00
parent 2264401a91
commit 5aeff9c218
11 changed files with 175 additions and 8 deletions
+14 -4
View File
@@ -1,6 +1,7 @@
from collections import defaultdict
from django.http import HttpRequest
from ninja import Router
from django.core.cache import cache
from accounts.models import CustomUser
from animations.schemas import RankingSchema
@@ -12,6 +13,12 @@ router = Router()
@router.get("results", response=RankingSchema)
def results(request: HttpRequest) -> dict:
cache_key = "api:results:results"
cached_data = cache.get(cache_key)
if cached_data is not None:
return cached_data
responses_by_userid = defaultdict(list)
responses_by_puzzleid = defaultdict(list)
@@ -30,9 +37,12 @@ def results(request: HttpRequest) -> dict:
responses, key=lambda x: (x.rank_points is None, x.rank_points or 0)
)
return {
"users": CustomUser.objects.filter(pk__in=responses_by_userid.keys()),
"puzzles": SteamCollectionItem.objects.all(),
"responses_by_userid": responses_by_userid,
data = {
"users": list(CustomUser.objects.filter(pk__in=responses_by_userid.keys())),
"puzzles": list(SteamCollectionItem.objects.all()),
"responses_by_userid": dict(responses_by_userid),
"ranking_by_puzzle": ranking,
}
cache.set("api:results:results", data, 300)
return data
+1 -1
View File
@@ -1,7 +1,7 @@
from ninja import ModelSchema, Schema
from submissions.models import PuzzleResponse
from submissions.schemas import SteamCollectionItemOut, UserInfoOut
from submissions.schemas import SteamCollectionItemOut
class PuzzleResponseRankingOut(ModelSchema):