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.utils import timezone, translation
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.trans_real import (
check_for_language, get_supported_language_variant, language_code_re,
@@ -15,7 +16,7 @@ from django.utils.translation.trans_real import (
_supported = None
class LocaleMiddleware:
class LocaleMiddleware(MiddlewareMixin):
"""
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):
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.http import Http404
from django.shortcuts import redirect, resolve_url
from django.utils.deprecation import MiddlewareMixin
from django.utils.encoding import force_str
from django.utils.translation import ugettext as _
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.
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.middleware.csrf import CsrfViewMiddleware as BaseCsrfMiddleware
from django.utils.cache import patch_vary_headers
from django.utils.deprecation import MiddlewareMixin
from django.utils.http import cookie_date
from pretix.multidomain.models import KnownDomain
@@ -16,7 +17,7 @@ from pretix.multidomain.models import KnownDomain
LOCAL_HOST_NAMES = ('testserver', 'localhost')
class MultiDomainMiddleware:
class MultiDomainMiddleware(MiddlewareMixin):
def process_request(self, request):
# We try three options, in order of decreasing preference.
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.utils.deprecation import MiddlewareMixin
from pretix.presale.signals import process_response
from .utils import _detect_event
class EventMiddleware:
class EventMiddleware(MiddlewareMixin):
def process_request(self, request):
url = resolve(request.path_info)
request._namespace = url.namespace

View File

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