diff options
| author | Tim Graham <timograham@gmail.com> | 2016-12-31 13:24:00 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-01-17 20:52:04 -0500 |
| commit | d334f46b7a080fd3eb720141c19b37b10704a352 (patch) | |
| tree | eeea5a2a967c3078a58455b71cfa64dc8ead2fc6 /django | |
| parent | 631f4ab06112aca5bd6a57b81159048f936050bf (diff) | |
Refs #26601 -- Removed support for old-style middleware using settings.MIDDLEWARE_CLASSES.
Diffstat (limited to 'django')
| -rw-r--r-- | django/conf/global_settings.py | 7 | ||||
| -rw-r--r-- | django/contrib/flatpages/forms.py | 5 | ||||
| -rw-r--r-- | django/core/checks/compatibility/django_1_10.py | 4 | ||||
| -rw-r--r-- | django/core/checks/security/base.py | 13 | ||||
| -rw-r--r-- | django/core/checks/security/csrf.py | 8 | ||||
| -rw-r--r-- | django/core/checks/security/sessions.py | 8 | ||||
| -rw-r--r-- | django/core/checks/utils.py | 10 | ||||
| -rw-r--r-- | django/core/handlers/base.py | 126 | ||||
| -rw-r--r-- | django/views/debug.py | 8 |
9 files changed, 46 insertions, 143 deletions
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index f732682b1c..9cf2732d30 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -447,12 +447,7 @@ SECURE_PROXY_SSL_HEADER = None # List of middleware to use. Order is important; in the request phase, these # middleware will be applied in the order given, and in the response # phase the middleware will be applied in reverse order. -MIDDLEWARE_CLASSES = [ - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', -] - -MIDDLEWARE = None +MIDDLEWARE = [] ############ # SESSIONS # diff --git a/django/contrib/flatpages/forms.py b/django/contrib/flatpages/forms.py index fbc7da04de..4735c1ca95 100644 --- a/django/contrib/flatpages/forms.py +++ b/django/contrib/flatpages/forms.py @@ -29,9 +29,8 @@ class FlatpageForm(forms.ModelForm): ugettext("URL is missing a leading slash."), code='missing_leading_slash', ) - if (settings.APPEND_SLASH and ( - (settings.MIDDLEWARE and 'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE) or - 'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE_CLASSES) and + if (settings.APPEND_SLASH and + 'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE and not url.endswith('/')): raise forms.ValidationError( ugettext("URL is missing a trailing slash."), diff --git a/django/core/checks/compatibility/django_1_10.py b/django/core/checks/compatibility/django_1_10.py index 0ab28df6f8..120ef0b5b1 100644 --- a/django/core/checks/compatibility/django_1_10.py +++ b/django/core/checks/compatibility/django_1_10.py @@ -1,13 +1,13 @@ from __future__ import unicode_literals -from django.conf import global_settings, settings +from django.conf import settings from .. import Tags, Warning, register @register(Tags.compatibility) def check_duplicate_middleware_settings(app_configs, **kwargs): - if settings.MIDDLEWARE is not None and settings.MIDDLEWARE_CLASSES != global_settings.MIDDLEWARE_CLASSES: + if settings.MIDDLEWARE is not None and hasattr(settings, 'MIDDLEWARE_CLASSES'): return [Warning( "The MIDDLEWARE_CLASSES setting is deprecated in Django 1.10 " "and the MIDDLEWARE setting takes precedence. Since you've set " diff --git a/django/core/checks/security/base.py b/django/core/checks/security/base.py index f482f77153..bc804c53df 100644 --- a/django/core/checks/security/base.py +++ b/django/core/checks/security/base.py @@ -1,7 +1,6 @@ from django.conf import settings from .. import Tags, Warning, register -from ..utils import patch_middleware_message SECRET_KEY_MIN_LENGTH = 50 SECRET_KEY_MIN_UNIQUE_CHARACTERS = 5 @@ -109,25 +108,23 @@ W021 = Warning( def _security_middleware(): - return ("django.middleware.security.SecurityMiddleware" in settings.MIDDLEWARE_CLASSES or - settings.MIDDLEWARE and "django.middleware.security.SecurityMiddleware" in settings.MIDDLEWARE) + return 'django.middleware.security.SecurityMiddleware' in settings.MIDDLEWARE def _xframe_middleware(): - return ("django.middleware.clickjacking.XFrameOptionsMiddleware" in settings.MIDDLEWARE_CLASSES or - settings.MIDDLEWARE and "django.middleware.clickjacking.XFrameOptionsMiddleware" in settings.MIDDLEWARE) + return 'django.middleware.clickjacking.XFrameOptionsMiddleware' in settings.MIDDLEWARE @register(Tags.security, deploy=True) def check_security_middleware(app_configs, **kwargs): passed_check = _security_middleware() - return [] if passed_check else [patch_middleware_message(W001)] + return [] if passed_check else [W001] @register(Tags.security, deploy=True) def check_xframe_options_middleware(app_configs, **kwargs): passed_check = _xframe_middleware() - return [] if passed_check else [patch_middleware_message(W002)] + return [] if passed_check else [W002] @register(Tags.security, deploy=True) @@ -205,7 +202,7 @@ def check_xframe_deny(app_configs, **kwargs): not _xframe_middleware() or settings.X_FRAME_OPTIONS == 'DENY' ) - return [] if passed_check else [patch_middleware_message(W019)] + return [] if passed_check else [W019] @register(Tags.security, deploy=True) diff --git a/django/core/checks/security/csrf.py b/django/core/checks/security/csrf.py index d9dd47b3ea..75c9813e7f 100644 --- a/django/core/checks/security/csrf.py +++ b/django/core/checks/security/csrf.py @@ -1,7 +1,6 @@ from django.conf import settings from .. import Tags, Warning, register -from ..utils import patch_middleware_message W003 = Warning( "You don't appear to be using Django's built-in " @@ -22,14 +21,13 @@ W016 = Warning( def _csrf_middleware(): - return ("django.middleware.csrf.CsrfViewMiddleware" in settings.MIDDLEWARE_CLASSES or - settings.MIDDLEWARE and "django.middleware.csrf.CsrfViewMiddleware" in settings.MIDDLEWARE) + return 'django.middleware.csrf.CsrfViewMiddleware' in settings.MIDDLEWARE @register(Tags.security, deploy=True) def check_csrf_middleware(app_configs, **kwargs): passed_check = _csrf_middleware() - return [] if passed_check else [patch_middleware_message(W003)] + return [] if passed_check else [W003] @register(Tags.security, deploy=True) @@ -39,4 +37,4 @@ def check_csrf_cookie_secure(app_configs, **kwargs): not _csrf_middleware() or settings.CSRF_COOKIE_SECURE ) - return [] if passed_check else [patch_middleware_message(W016)] + return [] if passed_check else [W016] diff --git a/django/core/checks/security/sessions.py b/django/core/checks/security/sessions.py index bb361e7b50..1f31a167fa 100644 --- a/django/core/checks/security/sessions.py +++ b/django/core/checks/security/sessions.py @@ -1,7 +1,6 @@ from django.conf import settings from .. import Tags, Warning, register -from ..utils import patch_middleware_message def add_session_cookie_message(message): @@ -71,7 +70,7 @@ def check_session_cookie_secure(app_configs, **kwargs): if _session_app(): errors.append(W010) if _session_middleware(): - errors.append(patch_middleware_message(W011)) + errors.append(W011) if len(errors) > 1: errors = [W012] return errors @@ -84,15 +83,14 @@ def check_session_cookie_httponly(app_configs, **kwargs): if _session_app(): errors.append(W013) if _session_middleware(): - errors.append(patch_middleware_message(W014)) + errors.append(W014) if len(errors) > 1: errors = [W015] return errors def _session_middleware(): - return ("django.contrib.sessions.middleware.SessionMiddleware" in settings.MIDDLEWARE_CLASSES or - settings.MIDDLEWARE and "django.contrib.sessions.middleware.SessionMiddleware" in settings.MIDDLEWARE) + return 'django.contrib.sessions.middleware.SessionMiddleware' in settings.MIDDLEWARE def _session_app(): diff --git a/django/core/checks/utils.py b/django/core/checks/utils.py deleted file mode 100644 index 995d8432c9..0000000000 --- a/django/core/checks/utils.py +++ /dev/null @@ -1,10 +0,0 @@ -import copy - -from django.conf import settings - - -def patch_middleware_message(error): - if settings.MIDDLEWARE is None: - error = copy.copy(error) - error.msg = error.msg.replace('MIDDLEWARE', 'MIDDLEWARE_CLASSES') - return error diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py index eddd576181..1d53fa9d94 100644 --- a/django/core/handlers/base.py +++ b/django/core/handlers/base.py @@ -1,23 +1,16 @@ from __future__ import unicode_literals import logging -import sys import types -import warnings from django.conf import settings -from django.core import signals from django.core.exceptions import ImproperlyConfigured, MiddlewareNotUsed from django.db import connections, transaction -from django.urls import get_resolver, get_urlconf, set_urlconf +from django.urls import get_resolver, set_urlconf from django.utils import six -from django.utils.deprecation import RemovedInDjango20Warning from django.utils.module_loading import import_string -from .exception import ( - convert_exception_to_response, get_exception_response, - handle_uncaught_exception, -) +from .exception import convert_exception_to_response, get_exception_response logger = logging.getLogger('django.request') @@ -34,8 +27,7 @@ class BaseHandler(object): def load_middleware(self): """ - Populate middleware lists from settings.MIDDLEWARE (or the deprecated - MIDDLEWARE_CLASSES). + Populate middleware lists from settings.MIDDLEWARE. Must be called after the environment is fixed (see __call__ in subclasses). """ @@ -45,62 +37,32 @@ class BaseHandler(object): self._response_middleware = [] self._exception_middleware = [] - if settings.MIDDLEWARE is None: - warnings.warn( - "Old-style middleware using settings.MIDDLEWARE_CLASSES is " - "deprecated. Update your middleware and use settings.MIDDLEWARE " - "instead.", RemovedInDjango20Warning - ) - handler = convert_exception_to_response(self._legacy_get_response) - for middleware_path in settings.MIDDLEWARE_CLASSES: - mw_class = import_string(middleware_path) - try: - mw_instance = mw_class() - except MiddlewareNotUsed as exc: - if settings.DEBUG: - if six.text_type(exc): - logger.debug('MiddlewareNotUsed(%r): %s', middleware_path, exc) - else: - logger.debug('MiddlewareNotUsed: %r', middleware_path) - continue - - if hasattr(mw_instance, 'process_request'): - self._request_middleware.append(mw_instance.process_request) - if hasattr(mw_instance, 'process_view'): - self._view_middleware.append(mw_instance.process_view) - if hasattr(mw_instance, 'process_template_response'): - self._template_response_middleware.insert(0, mw_instance.process_template_response) - if hasattr(mw_instance, 'process_response'): - self._response_middleware.insert(0, mw_instance.process_response) - if hasattr(mw_instance, 'process_exception'): - self._exception_middleware.insert(0, mw_instance.process_exception) - else: - handler = convert_exception_to_response(self._get_response) - for middleware_path in reversed(settings.MIDDLEWARE): - middleware = import_string(middleware_path) - try: - mw_instance = middleware(handler) - except MiddlewareNotUsed as exc: - if settings.DEBUG: - if six.text_type(exc): - logger.debug('MiddlewareNotUsed(%r): %s', middleware_path, exc) - else: - logger.debug('MiddlewareNotUsed: %r', middleware_path) - continue + handler = convert_exception_to_response(self._get_response) + for middleware_path in reversed(settings.MIDDLEWARE): + middleware = import_string(middleware_path) + try: + mw_instance = middleware(handler) + except MiddlewareNotUsed as exc: + if settings.DEBUG: + if six.text_type(exc): + logger.debug('MiddlewareNotUsed(%r): %s', middleware_path, exc) + else: + logger.debug('MiddlewareNotUsed: %r', middleware_path) + continue - if mw_instance is None: - raise ImproperlyConfigured( - 'Middleware factory %s returned None.' % middleware_path - ) + if mw_instance is None: + raise ImproperlyConfigured( + 'Middleware factory %s returned None.' % middleware_path + ) - if hasattr(mw_instance, 'process_view'): - self._view_middleware.insert(0, mw_instance.process_view) - if hasattr(mw_instance, 'process_template_response'): - self._template_response_middleware.append(mw_instance.process_template_response) - if hasattr(mw_instance, 'process_exception'): - self._exception_middleware.append(mw_instance.process_exception) + if hasattr(mw_instance, 'process_view'): + self._view_middleware.insert(0, mw_instance.process_view) + if hasattr(mw_instance, 'process_template_response'): + self._template_response_middleware.append(mw_instance.process_template_response) + if hasattr(mw_instance, 'process_exception'): + self._exception_middleware.append(mw_instance.process_exception) - handler = convert_exception_to_response(mw_instance) + handler = convert_exception_to_response(mw_instance) # We only assign to this when initialization is complete as it is used # as a flag for initialization being complete. @@ -123,22 +85,6 @@ class BaseHandler(object): response = self._middleware_chain(request) - # This block is only needed for legacy MIDDLEWARE_CLASSES; if - # MIDDLEWARE is used, self._response_middleware will be empty. - try: - # Apply response middleware, regardless of the response - for middleware_method in self._response_middleware: - response = middleware_method(request, response) - # Complain if the response middleware returned None (a common error). - if response is None: - raise ValueError( - "%s.process_response didn't return an " - "HttpResponse object. It returned None instead." - % (middleware_method.__self__.__class__.__name__)) - except Exception: # Any exception should be gathered and handled - signals.got_request_exception.send(sender=self.__class__, request=request) - response = self.handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) - response._closable_objects.append(request) # If the exception handler returns a TemplateResponse that has not @@ -228,23 +174,3 @@ class BaseHandler(object): if response: return response raise - - def handle_uncaught_exception(self, request, resolver, exc_info): - """Allow subclasses to override uncaught exception handling.""" - return handle_uncaught_exception(request, resolver, exc_info) - - def _legacy_get_response(self, request): - """ - Apply process_request() middleware and call the main _get_response(), - if needed. Used only for legacy MIDDLEWARE_CLASSES. - """ - response = None - # Apply request middleware - for middleware_method in self._request_middleware: - response = middleware_method(request) - if response: - break - - if response is None: - response = self._get_response(request) - return response diff --git a/django/views/debug.py b/django/views/debug.py index 0345859c74..0fb5ab1a2d 100644 --- a/django/views/debug.py +++ b/django/views/debug.py @@ -867,8 +867,8 @@ Python Version: {{ sys_version_info }} Installed Applications: {{ settings.INSTALLED_APPS|pprint }} Installed Middleware: -{% if settings.MIDDLEWARE is not None %}{{ settings.MIDDLEWARE|pprint }}""" -"""{% else %}{{ settings.MIDDLEWARE_CLASSES|pprint }}{% endif %} +{{ settings.MIDDLEWARE|pprint }}""" +""" {% if template_does_not_exist %}Template loader postmortem {% if postmortem %}Django tried loading these templates, in this order: @@ -1075,8 +1075,8 @@ Server time: {{server_time|date:"r"}} Installed Applications: {{ settings.INSTALLED_APPS|pprint }} Installed Middleware: -{% if settings.MIDDLEWARE is not None %}{{ settings.MIDDLEWARE|pprint }}""" -"""{% else %}{{ settings.MIDDLEWARE_CLASSES|pprint }}{% endif %} +{{ settings.MIDDLEWARE|pprint }}""" +""" {% if template_does_not_exist %}Template loader postmortem {% if postmortem %}Django tried loading these templates, in this order: {% for entry in postmortem %} |
