From 965428e42232aef1a0de93d82d31fc9357c17306 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 27 Sep 2016 10:00:03 +0200 Subject: [PATCH] Django 1.10: New-style middlewares --- src/pretix/base/middleware.py | 5 +++-- src/pretix/control/middleware.py | 3 ++- src/pretix/helpers/debug.py | 6 ++++++ src/pretix/multidomain/middlewares.py | 3 ++- src/pretix/presale/middleware.py | 3 ++- src/pretix/settings.py | 4 ++-- src/requirements/dev.txt | 2 +- src/requirements/production.txt | 2 +- 8 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 src/pretix/helpers/debug.py diff --git a/src/pretix/base/middleware.py b/src/pretix/base/middleware.py index 5188d2700..3769f7160 100644 --- a/src/pretix/base/middleware.py +++ b/src/pretix/base/middleware.py @@ -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 = {} diff --git a/src/pretix/control/middleware.py b/src/pretix/control/middleware.py index d9f53a747..041f584b1 100644 --- a/src/pretix/control/middleware.py +++ b/src/pretix/control/middleware.py @@ -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 diff --git a/src/pretix/helpers/debug.py b/src/pretix/helpers/debug.py new file mode 100644 index 000000000..cf2dc22cc --- /dev/null +++ b/src/pretix/helpers/debug.py @@ -0,0 +1,6 @@ +from debug_toolbar.middleware import DebugToolbarMiddleware +from django.utils.deprecation import MiddlewareMixin + + +class DebugMiddlewareCompatibilityShim(MiddlewareMixin, DebugToolbarMiddleware): + pass diff --git a/src/pretix/multidomain/middlewares.py b/src/pretix/multidomain/middlewares.py index 65728aa82..154fba225 100644 --- a/src/pretix/multidomain/middlewares.py +++ b/src/pretix/multidomain/middlewares.py @@ -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): diff --git a/src/pretix/presale/middleware.py b/src/pretix/presale/middleware.py index 5c454e9f9..757d85c8e 100644 --- a/src/pretix/presale/middleware.py +++ b/src/pretix/presale/middleware.py @@ -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 diff --git a/src/pretix/settings.py b/src/pretix/settings.py index b561ccff4..245edc8cc 100644 --- a/src/pretix/settings.py +++ b/src/pretix/settings.py @@ -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 diff --git a/src/requirements/dev.txt b/src/requirements/dev.txt index bc512b756..82b9bf544 100644 --- a/src/requirements/dev.txt +++ b/src/requirements/dev.txt @@ -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 # Testing requirements pep8==1.5.7 # exact requirement by flake8 2.4.0 diff --git a/src/requirements/production.txt b/src/requirements/production.txt index 1fcba4009..d61b93a0d 100644 --- a/src/requirements/production.txt +++ b/src/requirements/production.txt @@ -4,7 +4,7 @@ python-dateutil pytz django-bootstrap3>=6.2,<6.3 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 git+https://github.com/pretix/PyPDF2.git@pretix#egg=PyPDF2 easy-thumbnails>=2.2,<3