Unverified Commit 98456e11 by Brian Mesick Committed by GitHub

Merge pull request #16840 from edx/bmedx/django111_conditional_birdcage

Make all uses of birdcage conditional, should fix 1.11 errors
parents 5da1bc44 2579785a
...@@ -45,6 +45,9 @@ import imp ...@@ -45,6 +45,9 @@ import imp
import os import os
import sys import sys
from datetime import timedelta from datetime import timedelta
import django
import lms.envs.common import lms.envs.common
# Although this module itself may not use these imported variables, other dependent modules may. # Although this module itself may not use these imported variables, other dependent modules may.
from lms.envs.common import ( from lms.envs.common import (
...@@ -433,6 +436,13 @@ simplefilter('ignore') ...@@ -433,6 +436,13 @@ simplefilter('ignore')
################################# Middleware ################################### ################################# 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 = [ MIDDLEWARE_CLASSES = [
'crum.CurrentRequestUserMiddleware', 'crum.CurrentRequestUserMiddleware',
'request_cache.middleware.RequestCache', 'request_cache.middleware.RequestCache',
...@@ -442,7 +452,7 @@ MIDDLEWARE_CLASSES = [ ...@@ -442,7 +452,7 @@ MIDDLEWARE_CLASSES = [
'openedx.core.djangoapps.header_control.middleware.HeaderControlMiddleware', 'openedx.core.djangoapps.header_control.middleware.HeaderControlMiddleware',
'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'birdcage.v1_11.csrf.CsrfViewMiddleware', _csrf_middleware,
'django.contrib.sites.middleware.CurrentSiteMiddleware', 'django.contrib.sites.middleware.CurrentSiteMiddleware',
# Instead of SessionMiddleware, we use a more secure version # Instead of SessionMiddleware, we use a more secure version
......
...@@ -34,6 +34,7 @@ import sys ...@@ -34,6 +34,7 @@ import sys
import os import os
import dealer.git import dealer.git
import django
from path import Path as path from path import Path as path
from warnings import simplefilter from warnings import simplefilter
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
...@@ -1230,6 +1231,13 @@ simplefilter('ignore') ...@@ -1230,6 +1231,13 @@ simplefilter('ignore')
################################# Middleware ################################### ################################# 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 = [ MIDDLEWARE_CLASSES = [
'crum.CurrentRequestUserMiddleware', 'crum.CurrentRequestUserMiddleware',
...@@ -1271,7 +1279,7 @@ MIDDLEWARE_CLASSES = [ ...@@ -1271,7 +1279,7 @@ MIDDLEWARE_CLASSES = [
'corsheaders.middleware.CorsMiddleware', 'corsheaders.middleware.CorsMiddleware',
'openedx.core.djangoapps.cors_csrf.middleware.CorsCSRFMiddleware', 'openedx.core.djangoapps.cors_csrf.middleware.CorsCSRFMiddleware',
'openedx.core.djangoapps.cors_csrf.middleware.CsrfCrossDomainCookieMiddleware', 'openedx.core.djangoapps.cors_csrf.middleware.CsrfCrossDomainCookieMiddleware',
'birdcage.v1_11.csrf.CsrfViewMiddleware', _csrf_middleware,
'splash.middleware.SplashMiddleware', 'splash.middleware.SplashMiddleware',
......
...@@ -8,9 +8,13 @@ Settings for load testing. ...@@ -8,9 +8,13 @@ Settings for load testing.
from .aws import * 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 # Disable CSRF for load testing
EXCLUDE_CSRF = lambda elem: elem not in [ EXCLUDE_CSRF = lambda elem: elem not in [
'django.template.context_processors.csrf', 'django.template.context_processors.csrf',
'django.middleware.csrf.CsrfViewMiddleware',
'birdcage.v1_11.csrf.CsrfViewMiddleware' 'birdcage.v1_11.csrf.CsrfViewMiddleware'
] ]
DEFAULT_TEMPLATE_ENGINE['OPTIONS']['context_processors'] = filter( DEFAULT_TEMPLATE_ENGINE['OPTIONS']['context_processors'] = filter(
......
...@@ -44,12 +44,20 @@ CSRF cookie. ...@@ -44,12 +44,20 @@ CSRF cookie.
import logging import logging
import django
from django.conf import settings from django.conf import settings
from django.core.exceptions import ImproperlyConfigured, MiddlewareNotUsed 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 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__) log = logging.getLogger(__name__)
......
...@@ -5,11 +5,18 @@ Tests for the CORS CSRF middleware ...@@ -5,11 +5,18 @@ Tests for the CORS CSRF middleware
from mock import patch, Mock from mock import patch, Mock
import ddt import ddt
import django
from django.test import TestCase from django.test import TestCase
from django.test.utils import override_settings from django.test.utils import override_settings
from django.core.exceptions import MiddlewareNotUsed, ImproperlyConfigured from django.core.exceptions import MiddlewareNotUsed, ImproperlyConfigured
from django.http import HttpResponse 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 from ..middleware import CorsCSRFMiddleware, CsrfCrossDomainCookieMiddleware
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment