summaryrefslogtreecommitdiff
path: root/django/core
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-12-31 13:24:00 -0500
committerTim Graham <timograham@gmail.com>2017-01-17 20:52:04 -0500
commitd334f46b7a080fd3eb720141c19b37b10704a352 (patch)
treeeeea5a2a967c3078a58455b71cfa64dc8ead2fc6 /django/core
parent631f4ab06112aca5bd6a57b81159048f936050bf (diff)
Refs #26601 -- Removed support for old-style middleware using settings.MIDDLEWARE_CLASSES.
Diffstat (limited to 'django/core')
-rw-r--r--django/core/checks/compatibility/django_1_10.py4
-rw-r--r--django/core/checks/security/base.py13
-rw-r--r--django/core/checks/security/csrf.py8
-rw-r--r--django/core/checks/security/sessions.py8
-rw-r--r--django/core/checks/utils.py10
-rw-r--r--django/core/handlers/base.py126
6 files changed, 39 insertions, 130 deletions
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