cache quests by quest permissions

This commit is contained in:
Laura Klünder 2024-12-24 18:57:34 +01:00
parent 2805061c47
commit 56d0925ada
2 changed files with 4 additions and 1 deletions

View file

@ -19,7 +19,7 @@ from c3nav.mapdata.utils.cache.stats import increment_cache_key
request_cache = LocalCacheProxy(maxsize=settings.CACHE_SIZE_API)
def api_etag(permissions=True, etag_func=AccessPermission.etag_func, base_mapdata=False):
def api_etag(permissions=True, quests=False, etag_func=AccessPermission.etag_func, base_mapdata=False):
def outer_wrapper(func):
@wraps(func)
@ -41,6 +41,8 @@ def api_etag(permissions=True, etag_func=AccessPermission.etag_func, base_mapdat
response_format = "json"
raw_etag = '%s:%s:%s' % (response_format, get_language(),
(etag_func(request) if permissions else MapUpdate.current_cache_key()))
if quests:
raw_etag += 'all' if request.user.is_superuser else f':{','.join(request.user_permissions.quests)}'
if base_mapdata:
raw_etag += ':%d' % request.user_permissions.can_access_base_mapdata
etag = quote_etag(raw_etag)

View file

@ -401,5 +401,6 @@ Quests
@map_api_router.get('/quests/', summary="get open quests",
response={200: list[QuestSchema], **auth_responses})
@api_etag(permissions=True, quests=True)
def list_quests(request):
return get_all_quests_for_request(request)