diff --git a/src/c3nav/mapdata/api/base.py b/src/c3nav/mapdata/api/base.py index 14e75efb..8de91440 100644 --- a/src/c3nav/mapdata/api/base.py +++ b/src/c3nav/mapdata/api/base.py @@ -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) diff --git a/src/c3nav/mapdata/api/map.py b/src/c3nav/mapdata/api/map.py index 7d1a3407..8aa440f3 100644 --- a/src/c3nav/mapdata/api/map.py +++ b/src/c3nav/mapdata/api/map.py @@ -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) \ No newline at end of file