feat: add site language config
This commit is contained in:
@@ -16,6 +16,7 @@ from django.utils.deprecation import MiddlewareMixin
|
|||||||
|
|
||||||
from openedx.core.djangoapps.dark_lang import DARK_LANGUAGE_KEY
|
from openedx.core.djangoapps.dark_lang import DARK_LANGUAGE_KEY
|
||||||
from openedx.core.djangoapps.dark_lang.models import DarkLangConfig
|
from openedx.core.djangoapps.dark_lang.models import DarkLangConfig
|
||||||
|
from openedx.core.djangoapps.site_configuration.helpers import get_value
|
||||||
from openedx.core.djangoapps.user_api.preferences.api import get_user_preference
|
from openedx.core.djangoapps.user_api.preferences.api import get_user_preference
|
||||||
|
|
||||||
# If django 1.7 or higher is used, the right-side can be updated with new-style codes.
|
# If django 1.7 or higher is used, the right-side can be updated with new-style codes.
|
||||||
@@ -90,8 +91,17 @@ class DarkLangMiddleware(MiddlewareMixin):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self._clean_accept_headers(request)
|
self._clean_accept_headers(request)
|
||||||
|
self._set_site_or_microsite_language(request)
|
||||||
self._activate_preview_language(request)
|
self._activate_preview_language(request)
|
||||||
|
|
||||||
|
def _set_site_or_microsite_language(self, request):
|
||||||
|
"""
|
||||||
|
Apply language specified in site configuration.
|
||||||
|
"""
|
||||||
|
language = get_value('LANGUAGE_CODE', None)
|
||||||
|
if language:
|
||||||
|
request.session[LANGUAGE_SESSION_KEY] = language
|
||||||
|
|
||||||
def _fuzzy_match(self, lang_code):
|
def _fuzzy_match(self, lang_code):
|
||||||
"""Returns a fuzzy match for lang_code"""
|
"""Returns a fuzzy match for lang_code"""
|
||||||
match = None
|
match = None
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from django.utils.translation import LANGUAGE_SESSION_KEY
|
|||||||
|
|
||||||
from openedx.core.djangoapps.dark_lang.middleware import DarkLangMiddleware
|
from openedx.core.djangoapps.dark_lang.middleware import DarkLangMiddleware
|
||||||
from openedx.core.djangoapps.dark_lang.models import DarkLangConfig
|
from openedx.core.djangoapps.dark_lang.models import DarkLangConfig
|
||||||
|
from openedx.core.djangoapps.site_configuration.tests.test_util import with_site_configuration
|
||||||
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase
|
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase
|
||||||
from common.djangoapps.student.tests.factories import UserFactory
|
from common.djangoapps.student.tests.factories import UserFactory
|
||||||
|
|
||||||
@@ -256,6 +257,16 @@ class DarkLangMiddlewareTests(CacheIsolationTestCase):
|
|||||||
session[LANGUAGE_SESSION_KEY] = session_language
|
session[LANGUAGE_SESSION_KEY] = session_language
|
||||||
session.save()
|
session.save()
|
||||||
|
|
||||||
|
@with_site_configuration(configuration={'LANGUAGE_CODE': 'rel'})
|
||||||
|
def test_site_configuration_language(self):
|
||||||
|
# `LANGUAGE_CODE` in site configuration should override session lang
|
||||||
|
self._set_client_session_language('notrel')
|
||||||
|
self.client.get('/home')
|
||||||
|
self.assert_session_lang_equals(
|
||||||
|
'rel',
|
||||||
|
self.client.session
|
||||||
|
)
|
||||||
|
|
||||||
def test_preview_lang_with_released_language(self):
|
def test_preview_lang_with_released_language(self):
|
||||||
# Preview lang should always override selection
|
# Preview lang should always override selection
|
||||||
self._post_set_preview_lang('rel')
|
self._post_set_preview_lang('rel')
|
||||||
|
|||||||
Reference in New Issue
Block a user