Skip to content
Snippets Groups Projects
Unverified Commit e612a9bc authored by David Ormsbee's avatar David Ormsbee Committed by GitHub
Browse files

Merge pull request #21320 from edx/ormsbee/theme_by_qs

Override theme with site_theme query param
parents b599c807 7944e6b4
No related branches found
No related tags found
No related merge requests found
......@@ -21,9 +21,15 @@ class CurrentSiteThemeMiddleware(object):
"""
Set the request's 'site_theme' attribute based upon the current user.
"""
# Specifying a "site_theme" querystring param takes precedence
qs_theme = request.GET.get('site_theme')
# Determine if the user has specified a preview site
preview_site_theme = get_user_preview_site_theme(request)
if preview_site_theme:
if qs_theme:
site_theme = SiteTheme(site=request.site, theme_dir_name=qs_theme)
elif preview_site_theme:
site_theme = preview_site_theme
else:
default_theme = None
......
......@@ -30,11 +30,16 @@ class TestCurrentSiteThemeMiddleware(TestCase):
self.site_theme_middleware = CurrentSiteThemeMiddleware()
self.user = UserFactory.create()
def create_mock_get_request(self):
def create_mock_get_request(self, qs_theme=None):
"""
Returns a mock GET request.
"""
request = RequestFactory().get(TEST_URL)
if qs_theme:
test_url = "{}?site_theme={}".format(TEST_URL, qs_theme)
else:
test_url = TEST_URL
request = RequestFactory().get(test_url)
self.initialize_mock_request(request)
return request
......@@ -87,7 +92,12 @@ class TestCurrentSiteThemeMiddleware(TestCase):
self.initialize_mock_request(post_request)
set_user_preview_site_theme(post_request, None)
# Finally verify that no theme is returned
# Verify that no theme is returned now
get_request = self.create_mock_get_request()
self.assertEqual(self.site_theme_middleware.process_request(get_request), None)
self.assertIsNone(get_request.site_theme)
# Verify that we can still force the theme with a querystring arg
get_request = self.create_mock_get_request(qs_theme=TEST_THEME_NAME)
self.assertEqual(self.site_theme_middleware.process_request(get_request), None)
self.assertEqual(get_request.site_theme.theme_dir_name, TEST_THEME_NAME)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment