diff --git a/src/pretix/base/middleware.py b/src/pretix/base/middleware.py index 5188d27006..3769f71602 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 d9f53a7478..041f584b17 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 0000000000..cf2dc22cc4 --- /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 65728aa821..154fba225c 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 5c454e9f9e..757d85c8e6 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 b561ccff43..245edc8cca 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 bc512b7562..82b9bf5449 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 1fcba40090..d61b93a0d1 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