cache quests by quest permissions
This commit is contained in:
parent
2805061c47
commit
56d0925ada
2 changed files with 4 additions and 1 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
Loading…
Add table
Add a link
Reference in a new issue