etags in api preview
This commit is contained in:
parent
e7f0a00df9
commit
968fc3885d
3 changed files with 4 additions and 15 deletions
|
@ -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
|
|
|
@ -40,7 +40,10 @@ def api_etag(permissions=True, etag_func=AccessPermission.etag_func, cache_param
|
||||||
def wrapper(func):
|
def wrapper(func):
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapped_func(self, request, *args, **kwargs):
|
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)
|
etag = quote_etag(raw_etag)
|
||||||
|
|
||||||
response = get_conditional_response(request, etag=etag)
|
response = get_conditional_response(request, etag=etag)
|
||||||
|
|
|
@ -202,7 +202,6 @@ MIDDLEWARE = [
|
||||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
'c3nav.api.middleware.RemoveEtagFromHTMLApiViewMiddleware'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
with suppress(ImportError):
|
with suppress(ImportError):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue