Django 1.10: New-style middlewares

This commit is contained in:
Raphael Michel
2016-09-27 10:00:03 +02:00
parent 1bf459c193
commit 965428e422
8 changed files with 19 additions and 9 deletions

View File

@@ -6,6 +6,7 @@ from django.core.urlresolvers import get_script_prefix
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse
from django.utils import timezone, translation from django.utils import timezone, translation
from django.utils.cache import patch_vary_headers from django.utils.cache import patch_vary_headers
from django.utils.deprecation import MiddlewareMixin
from django.utils.translation import LANGUAGE_SESSION_KEY from django.utils.translation import LANGUAGE_SESSION_KEY
from django.utils.translation.trans_real import ( from django.utils.translation.trans_real import (
check_for_language, get_supported_language_variant, language_code_re, check_for_language, get_supported_language_variant, language_code_re,
@@ -15,7 +16,7 @@ from django.utils.translation.trans_real import (
_supported = None _supported = None
class LocaleMiddleware: class LocaleMiddleware(MiddlewareMixin):
""" """
This middleware sets the correct locale and timezone This middleware sets the correct locale and timezone
@@ -134,7 +135,7 @@ def get_language_from_request(request: HttpRequest) -> str:
) )
class SecurityMiddleware: class SecurityMiddleware(MiddlewareMixin):
def _parse_csp(self, header): def _parse_csp(self, header):
h = {} h = {}

View File

@@ -5,13 +5,14 @@ from django.contrib.auth import REDIRECT_FIELD_NAME
from django.core.urlresolvers import get_script_prefix, resolve from django.core.urlresolvers import get_script_prefix, resolve
from django.http import Http404 from django.http import Http404
from django.shortcuts import redirect, resolve_url from django.shortcuts import redirect, resolve_url
from django.utils.deprecation import MiddlewareMixin
from django.utils.encoding import force_str from django.utils.encoding import force_str
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from pretix.base.models import Event, EventPermission, Organizer from pretix.base.models import Event, EventPermission, Organizer
class PermissionMiddleware: class PermissionMiddleware(MiddlewareMixin):
""" """
This middleware enforces all requests to the control app to require login. This middleware enforces all requests to the control app to require login.
Additionally, it enforces all requests to "control:event." URLs Additionally, it enforces all requests to "control:event." URLs

View File

@@ -0,0 +1,6 @@
from debug_toolbar.middleware import DebugToolbarMiddleware
from django.utils.deprecation import MiddlewareMixin
class DebugMiddlewareCompatibilityShim(MiddlewareMixin, DebugToolbarMiddleware):
pass

View File

@@ -9,6 +9,7 @@ from django.core.urlresolvers import set_urlconf
from django.http.request import split_domain_port from django.http.request import split_domain_port
from django.middleware.csrf import CsrfViewMiddleware as BaseCsrfMiddleware from django.middleware.csrf import CsrfViewMiddleware as BaseCsrfMiddleware
from django.utils.cache import patch_vary_headers from django.utils.cache import patch_vary_headers
from django.utils.deprecation import MiddlewareMixin
from django.utils.http import cookie_date from django.utils.http import cookie_date
from pretix.multidomain.models import KnownDomain from pretix.multidomain.models import KnownDomain
@@ -16,7 +17,7 @@ from pretix.multidomain.models import KnownDomain
LOCAL_HOST_NAMES = ('testserver', 'localhost') LOCAL_HOST_NAMES = ('testserver', 'localhost')
class MultiDomainMiddleware: class MultiDomainMiddleware(MiddlewareMixin):
def process_request(self, request): def process_request(self, request):
# We try three options, in order of decreasing preference. # We try three options, in order of decreasing preference.
if settings.USE_X_FORWARDED_HOST and ('HTTP_X_FORWARDED_HOST' in request.META): if settings.USE_X_FORWARDED_HOST and ('HTTP_X_FORWARDED_HOST' in request.META):

View File

@@ -1,11 +1,12 @@
from django.core.urlresolvers import resolve from django.core.urlresolvers import resolve
from django.utils.deprecation import MiddlewareMixin
from pretix.presale.signals import process_response from pretix.presale.signals import process_response
from .utils import _detect_event from .utils import _detect_event
class EventMiddleware: class EventMiddleware(MiddlewareMixin):
def process_request(self, request): def process_request(self, request):
url = resolve(request.path_info) url = resolve(request.path_info)
request._namespace = url.namespace request._namespace = url.namespace

View File

@@ -193,7 +193,7 @@ CORE_MODULES = {
("pretix", "control") ("pretix", "control")
} }
MIDDLEWARE_CLASSES = [ MIDDLEWARE = [
'pretix.multidomain.middlewares.MultiDomainMiddleware', 'pretix.multidomain.middlewares.MultiDomainMiddleware',
'pretix.multidomain.middlewares.SessionMiddleware', 'pretix.multidomain.middlewares.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
@@ -212,7 +212,7 @@ try:
import debug_toolbar # noqa import debug_toolbar # noqa
if DEBUG: if DEBUG:
INSTALLED_APPS.append('debug_toolbar.apps.DebugToolbarConfig') INSTALLED_APPS.append('debug_toolbar.apps.DebugToolbarConfig')
MIDDLEWARE_CLASSES.append('debug_toolbar.middleware.DebugToolbarMiddleware') MIDDLEWARE.append('pretix.helpers.debug.DebugMiddlewareCompatibilityShim')
except ImportError: except ImportError:
pass pass

View File

@@ -1,4 +1,4 @@
django-debug-toolbar==1.4 django-debug-toolbar==1.5
sqlparse==0.1.19 # not yet supported by django-debug-toolbar 1.4 sqlparse==0.1.19 # not yet supported by django-debug-toolbar 1.4
# Testing requirements # Testing requirements
pep8==1.5.7 # exact requirement by flake8 2.4.0 pep8==1.5.7 # exact requirement by flake8 2.4.0

View File

@@ -4,7 +4,7 @@ python-dateutil
pytz pytz
django-bootstrap3>=6.2,<6.3 django-bootstrap3>=6.2,<6.3
git+https://github.com/pretix/django-formset-js.git@master#egg=django-formset-js git+https://github.com/pretix/django-formset-js.git@master#egg=django-formset-js
django-compressor==2.0 django-compressor==2.1
reportlab>=3.2,<3.3 reportlab>=3.2,<3.3
git+https://github.com/pretix/PyPDF2.git@pretix#egg=PyPDF2 git+https://github.com/pretix/PyPDF2.git@pretix#egg=PyPDF2
easy-thumbnails>=2.2,<3 easy-thumbnails>=2.2,<3