etags in api preview

This commit is contained in:
Laura Klünder 2017-11-29 12:29:37 +01:00
parent e7f0a00df9
commit 968fc3885d
3 changed files with 4 additions and 15 deletions

View file

@ -1,13 +0,0 @@
class RemoveEtagFromHTMLApiViewMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if request.path.startswith('/api/'):
if response.has_header('content-type') and response['content-type'].startswith('text/html'):
if response.has_header('etag'):
del response['etag']
return response

View file

@ -40,7 +40,10 @@ def api_etag(permissions=True, etag_func=AccessPermission.etag_func, cache_param
def wrapper(func):
@wraps(func)
def wrapped_func(self, request, *args, **kwargs):
raw_etag = get_language()+':'+(etag_func(request) if permissions else MapUpdate.current_cache_key())
response_format = self.perform_content_negotiation(request)[0].format
etag_user = (':'+str(request.user.pk or 0)) if response_format == 'api' else ''
raw_etag = '%s%s:%s:%s' % (response_format, etag_user, get_language(),
(etag_func(request) if permissions else MapUpdate.current_cache_key()))
etag = quote_etag(raw_etag)
response = get_conditional_response(request, etag=etag)

View file

@ -202,7 +202,6 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'c3nav.api.middleware.RemoveEtagFromHTMLApiViewMiddleware'
]
with suppress(ImportError):