diff --git a/cms/envs/common.py b/cms/envs/common.py index 32310f9c24..194b6efd2d 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -45,6 +45,9 @@ import imp import os import sys from datetime import timedelta + +import django + import lms.envs.common # Although this module itself may not use these imported variables, other dependent modules may. from lms.envs.common import ( @@ -433,6 +436,13 @@ simplefilter('ignore') ################################# Middleware ################################### +# TODO: Remove Django 1.11 upgrade shim +# SHIM: Remove birdcage references post-1.11 upgrade as it is only in place to help during that deployment +if django.VERSION < (1, 9): + _csrf_middleware = 'birdcage.v1_11.csrf.CsrfViewMiddleware' +else: + _csrf_middleware = 'django.middleware.csrf.CsrfViewMiddleware' + MIDDLEWARE_CLASSES = [ 'crum.CurrentRequestUserMiddleware', 'request_cache.middleware.RequestCache', @@ -442,7 +452,7 @@ MIDDLEWARE_CLASSES = [ 'openedx.core.djangoapps.header_control.middleware.HeaderControlMiddleware', 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', - 'birdcage.v1_11.csrf.CsrfViewMiddleware', + _csrf_middleware, 'django.contrib.sites.middleware.CurrentSiteMiddleware', # Instead of SessionMiddleware, we use a more secure version diff --git a/lms/envs/common.py b/lms/envs/common.py index 42898fae2c..a994191a82 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -34,6 +34,7 @@ import sys import os import dealer.git +import django from path import Path as path from warnings import simplefilter from django.utils.translation import ugettext_lazy as _ @@ -1230,6 +1231,13 @@ simplefilter('ignore') ################################# Middleware ################################### +# TODO: Remove Django 1.11 upgrade shim +# SHIM: Remove birdcage references post-1.11 upgrade as it is only in place to help during that deployment +if django.VERSION < (1, 9): + _csrf_middleware = 'birdcage.v1_11.csrf.CsrfViewMiddleware' +else: + _csrf_middleware = 'django.middleware.csrf.CsrfViewMiddleware' + MIDDLEWARE_CLASSES = [ 'crum.CurrentRequestUserMiddleware', @@ -1271,7 +1279,7 @@ MIDDLEWARE_CLASSES = [ 'corsheaders.middleware.CorsMiddleware', 'openedx.core.djangoapps.cors_csrf.middleware.CorsCSRFMiddleware', 'openedx.core.djangoapps.cors_csrf.middleware.CsrfCrossDomainCookieMiddleware', - 'birdcage.v1_11.csrf.CsrfViewMiddleware', + _csrf_middleware, 'splash.middleware.SplashMiddleware', diff --git a/lms/envs/load_test.py b/lms/envs/load_test.py index 6b1018ecdd..cfc90add27 100644 --- a/lms/envs/load_test.py +++ b/lms/envs/load_test.py @@ -8,9 +8,13 @@ Settings for load testing. from .aws import * +# TODO: Remove Django 1.11 upgrade shim +# SHIM: Remove birdcage references post-1.11 upgrade as it is only in place to help during that deployment + # Disable CSRF for load testing EXCLUDE_CSRF = lambda elem: elem not in [ 'django.template.context_processors.csrf', + 'django.middleware.csrf.CsrfViewMiddleware', 'birdcage.v1_11.csrf.CsrfViewMiddleware' ] DEFAULT_TEMPLATE_ENGINE['OPTIONS']['context_processors'] = filter( diff --git a/openedx/core/djangoapps/cors_csrf/middleware.py b/openedx/core/djangoapps/cors_csrf/middleware.py index ab4d82a693..1f3c8ee365 100644 --- a/openedx/core/djangoapps/cors_csrf/middleware.py +++ b/openedx/core/djangoapps/cors_csrf/middleware.py @@ -44,12 +44,20 @@ CSRF cookie. import logging +import django from django.conf import settings from django.core.exceptions import ImproperlyConfigured, MiddlewareNotUsed -from birdcage.v1_11.csrf import CsrfViewMiddleware from .helpers import is_cross_domain_request_allowed, skip_cross_domain_referer_check +# TODO: Remove Django 1.11 upgrade shim +# SHIM: Remove birdcage references post-1.11 upgrade as it is only in place to help during that deployment +if django.VERSION < (1, 9): + from birdcage.v1_11.csrf import CsrfViewMiddleware +else: + from django.middleware.csrf import CsrfViewMiddleware + + log = logging.getLogger(__name__) diff --git a/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py b/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py index 6fc3f7d1ce..7c30b8ce33 100644 --- a/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py +++ b/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py @@ -5,11 +5,18 @@ Tests for the CORS CSRF middleware from mock import patch, Mock import ddt +import django from django.test import TestCase from django.test.utils import override_settings from django.core.exceptions import MiddlewareNotUsed, ImproperlyConfigured from django.http import HttpResponse -from birdcage.v1_11.csrf import CsrfViewMiddleware + +# TODO: Remove Django 1.11 upgrade shim +# SHIM: Remove birdcage references post-1.11 upgrade as it is only in place to help during that deployment +if django.VERSION < (1, 9): + from birdcage.v1_11.csrf import CsrfViewMiddleware +else: + from django.middleware.csrf import CsrfViewMiddleware from ..middleware import CorsCSRFMiddleware, CsrfCrossDomainCookieMiddleware