From 19709cd36faf0a62f2e0a8acfe9986d3ce073a73 Mon Sep 17 00:00:00 2001
From: Jeremy Bowman <jbowman@edx.org>
Date: Wed, 6 Dec 2017 13:18:00 -0500
Subject: [PATCH] PLAT-1749 Support Django 1.10+ CSRF tokens

---
 cms/envs/common.py                                         | 2 +-
 lms/envs/common.py                                         | 2 +-
 lms/envs/load_test.py                                      | 2 +-
 openedx/core/djangoapps/cors_csrf/middleware.py            | 2 +-
 openedx/core/djangoapps/cors_csrf/tests/test_middleware.py | 2 +-
 requirements/edx/base.txt                                  | 1 +
 6 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/cms/envs/common.py b/cms/envs/common.py
index b859640f3e7..461766eef71 100644
--- a/cms/envs/common.py
+++ b/cms/envs/common.py
@@ -442,7 +442,7 @@ MIDDLEWARE_CLASSES = [
     'openedx.core.djangoapps.header_control.middleware.HeaderControlMiddleware',
     'django.middleware.cache.UpdateCacheMiddleware',
     'django.middleware.common.CommonMiddleware',
-    'django.middleware.csrf.CsrfViewMiddleware',
+    'birdcage.v1_11.csrf.CsrfViewMiddleware',
     '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 de666c6b476..a1a562e2aac 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -1268,7 +1268,7 @@ MIDDLEWARE_CLASSES = [
     'corsheaders.middleware.CorsMiddleware',
     'openedx.core.djangoapps.cors_csrf.middleware.CorsCSRFMiddleware',
     'openedx.core.djangoapps.cors_csrf.middleware.CsrfCrossDomainCookieMiddleware',
-    'django.middleware.csrf.CsrfViewMiddleware',
+    'birdcage.v1_11.csrf.CsrfViewMiddleware',
 
     'splash.middleware.SplashMiddleware',
 
diff --git a/lms/envs/load_test.py b/lms/envs/load_test.py
index 7b7e7df4051..6b1018ecdd3 100644
--- a/lms/envs/load_test.py
+++ b/lms/envs/load_test.py
@@ -11,7 +11,7 @@ from .aws import *
 # 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(
     EXCLUDE_CSRF, DEFAULT_TEMPLATE_ENGINE['OPTIONS']['context_processors']
diff --git a/openedx/core/djangoapps/cors_csrf/middleware.py b/openedx/core/djangoapps/cors_csrf/middleware.py
index 53bed42aade..ab4d82a6930 100644
--- a/openedx/core/djangoapps/cors_csrf/middleware.py
+++ b/openedx/core/djangoapps/cors_csrf/middleware.py
@@ -46,7 +46,7 @@ import logging
 
 from django.conf import settings
 from django.core.exceptions import ImproperlyConfigured, MiddlewareNotUsed
-from django.middleware.csrf import CsrfViewMiddleware
+from birdcage.v1_11.csrf import CsrfViewMiddleware
 
 from .helpers import is_cross_domain_request_allowed, skip_cross_domain_referer_check
 
diff --git a/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py b/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py
index 9c6480ba92c..6fc3f7d1ced 100644
--- a/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py
+++ b/openedx/core/djangoapps/cors_csrf/tests/test_middleware.py
@@ -9,7 +9,7 @@ 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 django.middleware.csrf import CsrfViewMiddleware
+from birdcage.v1_11.csrf import CsrfViewMiddleware
 
 from ..middleware import CorsCSRFMiddleware, CsrfCrossDomainCookieMiddleware
 
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index 68f93478373..bc227602796 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -17,6 +17,7 @@ dealer==2.0.4
 defusedxml==0.4.1
 django-babel-underscore==0.5.2
 markey==0.8  # From django-babel-underscore
+django-birdcage==1.0.0
 django-config-models==0.1.8
 django-countries==4.6.1
 django-filter==1.0.4
-- 
GitLab