Merge pull request #21320 from edx/ormsbee/theme_by_qs
Override theme with site_theme query param
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user