show quests on map

This commit is contained in:
Laura Klünder 2024-12-24 20:04:49 +01:00
parent 56d0925ada
commit 6acd163eb6
4 changed files with 86 additions and 5 deletions

View file

@ -10,6 +10,7 @@ from c3nav.api.auth import auth_responses
from c3nav.api.schema import BaseSchema
from c3nav.api.utils import NonEmptyStr
from c3nav.mapdata.models import MapUpdate
from c3nav.mapdata.schemas.models import DataOverlaySchema
from c3nav.mapdata.utils.cache.stats import increment_cache_key
from c3nav.mapdata.utils.user import get_user_data
from c3nav.mapdata.views import set_tile_access_cookie
@ -18,6 +19,7 @@ updates_api_router = APIRouter(tags=["updates"])
class UserDataSchema(BaseSchema):
# use in more places
logged_in: bool = APIField(
title="logged in",
description="whether a user is logged in",
@ -57,6 +59,8 @@ class UserDataSchema(BaseSchema):
description="IDs of access restrictions that this user (even if maybe not signed in) has access to",
example=[2, 5],
)
overlays: list[DataOverlaySchema]
quests: bool
class FetchUpdatesResponseSchema(BaseSchema):

View file

@ -89,7 +89,7 @@ class RangingBeaconAltitudeQuest(Quest):
@classmethod
def _qs_for_request(cls, request):
return RangingBeacon.qs_for_request(request).select_related('space').filter(altitude_quest=True)[:10]
return RangingBeacon.qs_for_request(request).select_related('space').filter(altitude_quest=True)
class QuestSchema(BaseSchema):

View file

@ -33,14 +33,15 @@ def get_user_data(request):
if request.user.is_authenticated:
result['title'] = request.user.username
# todo: cache this
result.update({
'overlays': [
DataOverlaySchema.model_validate(overlay).model_dump()
for overlay
in DataOverlay.qs_for_request(request)
]
for overlay in DataOverlay.qs_for_request(request)
],
'quests': bool(request.user.is_superuser or request.user_permissions.quests),
})
return result