get red of unwanted vary headers
This commit is contained in:
parent
0fbe1eb9bf
commit
153bad00e1
2 changed files with 42 additions and 0 deletions
40
src/c3nav/mapdata/middleware.py
Normal file
40
src/c3nav/mapdata/middleware.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
import re
|
||||
from functools import wraps
|
||||
|
||||
|
||||
class NoLanguageMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
response = self.get_response(request)
|
||||
|
||||
if not getattr(response, 'no_language', False):
|
||||
return response
|
||||
|
||||
if not getattr(response, 'keep_content_language', False):
|
||||
del response['Content-Language']
|
||||
|
||||
if not response.has_header('Vary'):
|
||||
return response
|
||||
|
||||
vary = tuple(s for s in re.split(r'\s*,\s*', response['Vary']) if s.lower() != 'accept-language')
|
||||
|
||||
if vary:
|
||||
response['Vary'] = ', '.join(vary)
|
||||
else:
|
||||
del response['Vary']
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def no_language(keep_content_language=False):
|
||||
def decorator(func):
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
response = func(*args, **kwargs)
|
||||
response.no_language = True
|
||||
response.keep_content_language = keep_content_language
|
||||
return response
|
||||
return wrapper
|
||||
return decorator
|
|
@ -10,11 +10,13 @@ from django.shortcuts import get_object_or_404
|
|||
from shapely.geometry import box
|
||||
|
||||
from c3nav.mapdata.cache import MapHistory
|
||||
from c3nav.mapdata.middleware import no_language
|
||||
from c3nav.mapdata.models import Level, MapUpdate, Source
|
||||
from c3nav.mapdata.render.base import get_render_level_ids
|
||||
from c3nav.mapdata.render.svg import SVGRenderer
|
||||
|
||||
|
||||
@no_language()
|
||||
def tile(request, level, zoom, x, y, format):
|
||||
zoom = int(zoom)
|
||||
if not (0 <= zoom <= 10):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue