Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
f2c3fa90
Commit
f2c3fa90
authored
Oct 13, 2016
by
Andy Armstrong
Committed by
GitHub
Oct 13, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #13677 from edx/andya/move-language-apps
Move dark_lang and lang_pref apps to openedx/core
parents
9a23babc
4d4097e1
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
137 additions
and
91 deletions
+137
-91
cms/envs/common.py
+5
-3
cms/templates/darklang/preview_lang.html
+1
-1
cms/urls.py
+6
-2
common/djangoapps/pipeline_mako/templates/static_content.html
+1
-1
common/djangoapps/student/tests/test_create_account.py
+1
-1
common/djangoapps/student/views.py
+3
-4
lms/djangoapps/courseware/tests/test_i18n.py
+5
-3
lms/djangoapps/courseware/views/index.py
+1
-1
lms/djangoapps/instructor/enrollment.py
+5
-7
lms/djangoapps/instructor/tests/test_api_email_localization.py
+2
-2
lms/djangoapps/notifier_api/serializers.py
+3
-2
lms/djangoapps/notifier_api/tests.py
+2
-2
lms/djangoapps/oauth2_handler/handlers.py
+1
-1
lms/djangoapps/oauth2_handler/tests.py
+1
-1
lms/djangoapps/student_account/views.py
+2
-2
lms/envs/common.py
+11
-7
lms/templates/darklang/preview_lang.html
+1
-1
lms/urls.py
+8
-2
openedx/core/djangoapps/dark_lang/__init__.py
+0
-0
openedx/core/djangoapps/dark_lang/admin.py
+1
-1
openedx/core/djangoapps/dark_lang/middleware.py
+4
-4
openedx/core/djangoapps/dark_lang/migrations/0001_initial.py
+0
-0
openedx/core/djangoapps/dark_lang/migrations/0002_data__enable_on_install.py
+0
-0
openedx/core/djangoapps/dark_lang/migrations/__init__.py
+0
-0
openedx/core/djangoapps/dark_lang/models.py
+4
-1
openedx/core/djangoapps/dark_lang/templates/dark_lang/preview_lang_include.html
+0
-0
openedx/core/djangoapps/dark_lang/tests.py
+5
-3
openedx/core/djangoapps/dark_lang/urls.py
+1
-1
openedx/core/djangoapps/dark_lang/views.py
+4
-5
openedx/core/djangoapps/lang_pref/__init__.py
+0
-0
openedx/core/djangoapps/lang_pref/api.py
+6
-8
openedx/core/djangoapps/lang_pref/middleware.py
+4
-3
openedx/core/djangoapps/lang_pref/tests/__init__.py
+0
-0
openedx/core/djangoapps/lang_pref/tests/test_api.py
+11
-2
openedx/core/djangoapps/lang_pref/tests/test_middleware.py
+33
-18
openedx/core/djangoapps/lang_pref/tests/test_views.py
+0
-0
openedx/core/djangoapps/lang_pref/views.py
+5
-2
No files found.
cms/envs/common.py
View file @
f2c3fa90
...
@@ -226,6 +226,7 @@ SOCIAL_SHARING_SETTINGS = {
...
@@ -226,6 +226,7 @@ SOCIAL_SHARING_SETTINGS = {
PROJECT_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
.
dirname
()
# /edx-platform/cms
PROJECT_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
.
dirname
()
# /edx-platform/cms
REPO_ROOT
=
PROJECT_ROOT
.
dirname
()
REPO_ROOT
=
PROJECT_ROOT
.
dirname
()
COMMON_ROOT
=
REPO_ROOT
/
"common"
COMMON_ROOT
=
REPO_ROOT
/
"common"
OPENEDX_ROOT
=
REPO_ROOT
/
"openedx"
CMS_ROOT
=
REPO_ROOT
/
"cms"
CMS_ROOT
=
REPO_ROOT
/
"cms"
LMS_ROOT
=
REPO_ROOT
/
"lms"
LMS_ROOT
=
REPO_ROOT
/
"lms"
ENV_ROOT
=
REPO_ROOT
.
dirname
()
# virtualenv dir /edx-platform is in
ENV_ROOT
=
REPO_ROOT
.
dirname
()
# virtualenv dir /edx-platform is in
...
@@ -251,6 +252,7 @@ MAKO_TEMPLATES['main'] = [
...
@@ -251,6 +252,7 @@ MAKO_TEMPLATES['main'] = [
COMMON_ROOT
/
'templates'
,
COMMON_ROOT
/
'templates'
,
COMMON_ROOT
/
'djangoapps'
/
'pipeline_mako'
/
'templates'
,
COMMON_ROOT
/
'djangoapps'
/
'pipeline_mako'
/
'templates'
,
COMMON_ROOT
/
'static'
,
# required to statically include common Underscore templates
COMMON_ROOT
/
'static'
,
# required to statically include common Underscore templates
OPENEDX_ROOT
/
'core'
/
'djangoapps'
/
'dark_lang'
/
'templates'
,
CMS_ROOT
/
'djangoapps'
/
'pipeline_js'
/
'templates'
,
CMS_ROOT
/
'djangoapps'
/
'pipeline_js'
/
'templates'
,
]
]
...
@@ -360,10 +362,10 @@ MIDDLEWARE_CLASSES = (
...
@@ -360,10 +362,10 @@ MIDDLEWARE_CLASSES = (
'track.middleware.TrackMiddleware'
,
'track.middleware.TrackMiddleware'
,
# This is used to set or update the user language preferences.
# This is used to set or update the user language preferences.
'lang_pref.middleware.LanguagePreferenceMiddleware'
,
'
openedx.core.djangoapps.
lang_pref.middleware.LanguagePreferenceMiddleware'
,
# Allows us to dark-launch particular languages
# Allows us to dark-launch particular languages
'dark_lang.middleware.DarkLangMiddleware'
,
'
openedx.core.djangoapps.
dark_lang.middleware.DarkLangMiddleware'
,
'embargo.middleware.EmbargoMiddleware'
,
'embargo.middleware.EmbargoMiddleware'
,
...
@@ -856,7 +858,7 @@ INSTALLED_APPS = (
...
@@ -856,7 +858,7 @@ INSTALLED_APPS = (
'course_modes'
,
'course_modes'
,
# Dark-launching languages
# Dark-launching languages
'dark_lang'
,
'
openedx.core.djangoapps.
dark_lang'
,
# User preferences
# User preferences
'openedx.core.djangoapps.user_api'
,
'openedx.core.djangoapps.user_api'
,
...
...
cms/templates/darklang/preview_lang.html
View file @
f2c3fa90
...
@@ -10,6 +10,6 @@ from django.utils.translation import ugettext as _
...
@@ -10,6 +10,6 @@ from django.utils.translation import ugettext as _
<
%
block
name=
"bodyclass"
>
is-signedin pattern-library
</
%
block>
<
%
block
name=
"bodyclass"
>
is-signedin pattern-library
</
%
block>
<
%
block
name=
"content"
>
<
%
block
name=
"content"
>
<
%
include
file=
"/darklang/preview_lang_include.html"
/>
<
%
include
file=
"/dark
_
lang/preview_lang_include.html"
/>
</
%
block>
</
%
block>
cms/urls.py
View file @
f2c3fa90
...
@@ -55,10 +55,14 @@ urlpatterns = patterns(
...
@@ -55,10 +55,14 @@ urlpatterns = patterns(
url
(
r'^api/user/'
,
include
(
'openedx.core.djangoapps.user_api.urls'
)),
url
(
r'^api/user/'
,
include
(
'openedx.core.djangoapps.user_api.urls'
)),
# Update session view
# Update session view
url
(
r'^lang_pref/session_language'
,
'lang_pref.views.update_session_language'
,
name
=
'session_language'
),
url
(
r'^lang_pref/session_language'
,
'openedx.core.djangoapps.lang_pref.views.update_session_language'
,
name
=
'session_language'
),
# Darklang View to change the preview language (or dark language)
# Darklang View to change the preview language (or dark language)
url
(
r'^update_lang/'
,
include
(
'
dark_lang.urls'
,
namespace
=
'dark
lang'
)),
url
(
r'^update_lang/'
,
include
(
'
openedx.core.djangoapps.dark_lang.urls'
,
namespace
=
'dark_
lang'
)),
)
)
# restful api
# restful api
...
...
common/djangoapps/pipeline_mako/templates/static_content.html
View file @
f2c3fa90
...
@@ -17,7 +17,7 @@ from openedx.core.djangoapps.theming.helpers import (
...
@@ -17,7 +17,7 @@ from openedx.core.djangoapps.theming.helpers import (
is_request_in_themed_site
,
is_request_in_themed_site
,
)
)
from
certificates
.
api
import
get_asset_url_by_slug
from
certificates
.
api
import
get_asset_url_by_slug
from
lang_pref
.
api
import
released_languages
from
openedx
.
core
.
djangoapps
.
lang_pref
.
api
import
released_languages
%
>
%
>
<
%
def
name=
"marketing_link(name)"
><
%
<
%
def
name=
"marketing_link(name)"
><
%
...
...
common/djangoapps/student/tests/test_create_account.py
View file @
f2c3fa90
...
@@ -15,7 +15,7 @@ import mock
...
@@ -15,7 +15,7 @@ import mock
import
pytz
import
pytz
from
openedx.core.djangoapps.user_api.preferences.api
import
get_user_preference
from
openedx.core.djangoapps.user_api.preferences.api
import
get_user_preference
from
lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.
lang_pref
import
LANGUAGE_KEY
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
openedx.core.djangoapps.external_auth.models
import
ExternalAuthMap
from
openedx.core.djangoapps.external_auth.models
import
ExternalAuthMap
import
student
import
student
...
...
common/djangoapps/student/views.py
View file @
f2c3fa90
...
@@ -85,8 +85,6 @@ from openedx.core.djangoapps.external_auth.login_and_register import (
...
@@ -85,8 +85,6 @@ from openedx.core.djangoapps.external_auth.login_and_register import (
register
as
external_auth_register
register
as
external_auth_register
)
)
from
lang_pref
import
LANGUAGE_KEY
import
track.views
import
track.views
import
dogstats_wrapper
as
dog_stats_api
import
dogstats_wrapper
as
dog_stats_api
...
@@ -120,11 +118,12 @@ from eventtracking import tracker
...
@@ -120,11 +118,12 @@ from eventtracking import tracker
from
notification_prefs.views
import
enable_notifications
from
notification_prefs.views
import
enable_notifications
from
openedx.core.djangoapps.credit.email_utils
import
get_credit_provider_display_names
,
make_providers_strings
from
openedx.core.djangoapps.credit.email_utils
import
get_credit_provider_display_names
,
make_providers_strings
from
openedx.core.djangoapps.user_api.preferences
import
api
as
preferences_api
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.programs.models
import
ProgramsApiConfig
from
openedx.core.djangoapps.programs
import
utils
as
programs_utils
from
openedx.core.djangoapps.programs
import
utils
as
programs_utils
from
openedx.core.djangoapps.programs.models
import
ProgramsApiConfig
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
from
openedx.core.djangoapps.theming
import
helpers
as
theming_helpers
from
openedx.core.djangoapps.theming
import
helpers
as
theming_helpers
from
openedx.core.djangoapps.user_api.preferences
import
api
as
preferences_api
log
=
logging
.
getLogger
(
"edx.student"
)
log
=
logging
.
getLogger
(
"edx.student"
)
...
...
lms/djangoapps/courseware/tests/test_i18n.py
View file @
f2c3fa90
"""
"""
Tests i18n in courseware
Tests i18n in courseware
"""
"""
import
re
import
re
from
django.conf
import
settings
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.contrib.auth.models
import
User
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
...
@@ -9,10 +11,10 @@ from django.test import TestCase
...
@@ -9,10 +11,10 @@ from django.test import TestCase
from
django.test.client
import
Client
from
django.test.client
import
Client
from
django.utils
import
translation
from
django.utils
import
translation
from
nose.plugins.attrib
import
attr
from
nose.plugins.attrib
import
attr
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
from
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.dark_lang.models
import
DarkLangConfig
from
lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
...
...
lms/djangoapps/courseware/views/index.py
View file @
f2c3fa90
...
@@ -22,10 +22,10 @@ import logging
...
@@ -22,10 +22,10 @@ import logging
import
newrelic.agent
import
newrelic.agent
import
urllib
import
urllib
from
lang_pref
import
LANGUAGE_KEY
from
xblock.fragment
import
Fragment
from
xblock.fragment
import
Fragment
from
opaque_keys.edx.keys
import
CourseKey
from
opaque_keys.edx.keys
import
CourseKey
from
openedx.core.lib.time_zone_utils
import
get_user_time_zone
from
openedx.core.lib.time_zone_utils
import
get_user_time_zone
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.user_api.preferences.api
import
get_user_preference
from
openedx.core.djangoapps.user_api.preferences.api
import
get_user_preference
from
shoppingcart.models
import
CourseRegistrationCode
from
shoppingcart.models
import
CourseRegistrationCode
from
student.models
import
CourseEnrollment
from
student.models
import
CourseEnrollment
...
...
lms/djangoapps/instructor/enrollment.py
View file @
f2c3fa90
...
@@ -14,21 +14,19 @@ from django.core.mail import send_mail
...
@@ -14,21 +14,19 @@ from django.core.mail import send_mail
from
django.utils.translation
import
override
as
override_language
from
django.utils.translation
import
override
as
override_language
from
course_modes.models
import
CourseMode
from
course_modes.models
import
CourseMode
from
courseware.models
import
StudentModule
from
courseware.model_data
import
FieldDataCache
from
courseware.model_data
import
FieldDataCache
from
courseware.module_render
import
get_module_for_descriptor
from
courseware.module_render
import
get_module_for_descriptor
from
courseware.models
import
StudentModule
from
edxmako.shortcuts
import
render_to_string
from
edxmako.shortcuts
import
render_to_string
from
lms.djangoapps.grades.scores
import
weighted_score
from
lms.djangoapps.grades.scores
import
weighted_score
from
lms.djangoapps.grades.signals.signals
import
SCORE_CHANGED
from
lms.djangoapps.grades.signals.signals
import
SCORE_CHANGED
from
lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
student.models
import
CourseEnrollment
,
CourseEnrollmentAllowed
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
from
submissions
import
api
as
sub_api
# installed from the edx-submissions repository
from
student.models
import
anonymous_id_for_user
from
openedx.core.djangoapps.user_api.models
import
UserPreference
from
openedx.core.djangoapps.user_api.models
import
UserPreference
from
submissions
import
api
as
sub_api
# installed from the edx-submissions repository
from
student.models
import
CourseEnrollment
,
CourseEnrollmentAllowed
,
anonymous_id_for_user
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore.exceptions
import
ItemNotFoundError
from
xmodule.modulestore.exceptions
import
ItemNotFoundError
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
...
...
lms/djangoapps/instructor/tests/test_api_email_localization.py
View file @
f2c3fa90
...
@@ -9,10 +9,10 @@ from django.test.utils import override_settings
...
@@ -9,10 +9,10 @@ from django.test.utils import override_settings
from
nose.plugins.attrib
import
attr
from
nose.plugins.attrib
import
attr
from
courseware.tests.factories
import
InstructorFactory
from
courseware.tests.factories
import
InstructorFactory
from
lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
,
delete_user_preference
from
student.models
import
CourseEnrollment
from
student.models
import
CourseEnrollment
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
,
delete_user_preference
from
xmodule.modulestore.tests.factories
import
CourseFactory
from
xmodule.modulestore.tests.factories
import
CourseFactory
from
xmodule.modulestore.tests.django_utils
import
SharedModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
SharedModuleStoreTestCase
...
...
lms/djangoapps/notifier_api/serializers.py
View file @
f2c3fa90
...
@@ -3,8 +3,9 @@ from django.http import Http404
...
@@ -3,8 +3,9 @@ from django.http import Http404
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
openedx.core.djangoapps.course_groups.cohorts
import
is_course_cohorted
from
openedx.core.djangoapps.course_groups.cohorts
import
is_course_cohorted
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
lang_pref
import
LANGUAGE_KEY
from
lms.djangoapps.notification_prefs
import
NOTIFICATION_PREF_KEY
class
NotifierUserSerializer
(
serializers
.
ModelSerializer
):
class
NotifierUserSerializer
(
serializers
.
ModelSerializer
):
...
...
lms/djangoapps/notifier_api/tests.py
View file @
f2c3fa90
...
@@ -5,14 +5,14 @@ from django.conf import settings
...
@@ -5,14 +5,14 @@ from django.conf import settings
from
django.test.client
import
RequestFactory
from
django.test.client
import
RequestFactory
from
django.test.utils
import
override_settings
from
django.test.utils
import
override_settings
from
openedx.core.djangoapps.course_groups.tests.helpers
import
CohortFactory
from
django_comment_common.models
import
Role
,
Permission
from
django_comment_common.models
import
Role
,
Permission
from
lang_pref
import
LANGUAGE_KEY
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
notifier_api.views
import
NotifierUsersViewSet
from
notifier_api.views
import
NotifierUsersViewSet
from
opaque_keys.edx.locator
import
CourseLocator
from
opaque_keys.edx.locator
import
CourseLocator
from
student.models
import
CourseEnrollment
from
student.models
import
CourseEnrollment
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
openedx.core.djangoapps.course_groups.tests.helpers
import
CohortFactory
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.user_api.models
import
UserPreference
from
openedx.core.djangoapps.user_api.models
import
UserPreference
from
openedx.core.djangoapps.user_api.tests.factories
import
UserPreferenceFactory
from
openedx.core.djangoapps.user_api.tests.factories
import
UserPreferenceFactory
from
util.testing
import
UrlResetMixin
from
util.testing
import
UrlResetMixin
...
...
lms/djangoapps/oauth2_handler/handlers.py
View file @
f2c3fa90
...
@@ -5,10 +5,10 @@ from django.core.cache import cache
...
@@ -5,10 +5,10 @@ from django.core.cache import cache
from
courseware.access
import
has_access
from
courseware.access
import
has_access
from
openedx.core.djangoapps.content.course_overviews.models
import
CourseOverview
from
openedx.core.djangoapps.content.course_overviews.models
import
CourseOverview
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.user_api.models
import
UserPreference
from
openedx.core.djangoapps.user_api.models
import
UserPreference
from
student.models
import
anonymous_id_for_user
from
student.models
import
anonymous_id_for_user
from
student.models
import
UserProfile
from
student.models
import
UserProfile
from
lang_pref
import
LANGUAGE_KEY
from
student.roles
import
GlobalStaff
,
CourseStaffRole
,
CourseInstructorRole
from
student.roles
import
GlobalStaff
,
CourseStaffRole
,
CourseInstructorRole
...
...
lms/djangoapps/oauth2_handler/tests.py
View file @
f2c3fa90
# pylint: disable=missing-docstring
# pylint: disable=missing-docstring
from
django.core.cache
import
cache
from
django.core.cache
import
cache
from
django.test.utils
import
override_settings
from
django.test.utils
import
override_settings
from
lang_pref
import
LANGUAGE_KEY
from
xmodule.modulestore.tests.factories
import
(
check_mongo_calls
,
CourseFactory
)
from
xmodule.modulestore.tests.factories
import
(
check_mongo_calls
,
CourseFactory
)
from
student.models
import
anonymous_id_for_user
from
student.models
import
anonymous_id_for_user
...
@@ -9,6 +8,7 @@ from student.models import UserProfile
...
@@ -9,6 +8,7 @@ from student.models import UserProfile
from
student.roles
import
(
CourseInstructorRole
,
CourseStaffRole
,
GlobalStaff
,
from
student.roles
import
(
CourseInstructorRole
,
CourseStaffRole
,
GlobalStaff
,
OrgInstructorRole
,
OrgStaffRole
)
OrgInstructorRole
,
OrgStaffRole
)
from
student.tests.factories
import
UserFactory
,
UserProfileFactory
from
student.tests.factories
import
UserFactory
,
UserProfileFactory
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
...
...
lms/djangoapps/student_account/views.py
View file @
f2c3fa90
...
@@ -26,11 +26,11 @@ from openedx.core.djangoapps.external_auth.login_and_register import (
...
@@ -26,11 +26,11 @@ from openedx.core.djangoapps.external_auth.login_and_register import (
login
as
external_auth_login
,
login
as
external_auth_login
,
register
as
external_auth_register
register
as
external_auth_register
)
)
from
lang_pref.api
import
released_languages
,
all_languages
from
openedx.core.djangoapps.commerce.utils
import
ecommerce_api_client
from
openedx.core.djangoapps.commerce.utils
import
ecommerce_api_client
from
openedx.core.djangoapps.lang_pref.api
import
released_languages
,
all_languages
from
openedx.core.djangoapps.programs.models
import
ProgramsApiConfig
from
openedx.core.djangoapps.programs.models
import
ProgramsApiConfig
from
openedx.core.djangoapps.theming.helpers
import
is_request_in_themed_site
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
from
openedx.core.djangoapps.theming.helpers
import
is_request_in_themed_site
from
openedx.core.djangoapps.user_api.accounts.api
import
request_password_change
from
openedx.core.djangoapps.user_api.accounts.api
import
request_password_change
from
openedx.core.djangoapps.user_api.errors
import
UserNotFound
from
openedx.core.djangoapps.user_api.errors
import
UserNotFound
from
openedx.core.lib.time_zone_utils
import
TIME_ZONE_CHOICES
from
openedx.core.lib.time_zone_utils
import
TIME_ZONE_CHOICES
...
...
lms/envs/common.py
View file @
f2c3fa90
...
@@ -380,6 +380,7 @@ XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds
...
@@ -380,6 +380,7 @@ XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds
PROJECT_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
.
dirname
()
# /edx-platform/lms
PROJECT_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
.
dirname
()
# /edx-platform/lms
REPO_ROOT
=
PROJECT_ROOT
.
dirname
()
REPO_ROOT
=
PROJECT_ROOT
.
dirname
()
COMMON_ROOT
=
REPO_ROOT
/
"common"
COMMON_ROOT
=
REPO_ROOT
/
"common"
OPENEDX_ROOT
=
REPO_ROOT
/
"openedx"
ENV_ROOT
=
REPO_ROOT
.
dirname
()
# virtualenv dir /edx-platform is in
ENV_ROOT
=
REPO_ROOT
.
dirname
()
# virtualenv dir /edx-platform is in
COURSES_ROOT
=
ENV_ROOT
/
"data"
COURSES_ROOT
=
ENV_ROOT
/
"data"
...
@@ -460,10 +461,13 @@ OAUTH2_PROVIDER = {
...
@@ -460,10 +461,13 @@ OAUTH2_PROVIDER = {
import
tempfile
import
tempfile
MAKO_MODULE_DIR
=
os
.
path
.
join
(
tempfile
.
gettempdir
(),
'mako_lms'
)
MAKO_MODULE_DIR
=
os
.
path
.
join
(
tempfile
.
gettempdir
(),
'mako_lms'
)
MAKO_TEMPLATES
=
{}
MAKO_TEMPLATES
=
{}
MAKO_TEMPLATES
[
'main'
]
=
[
PROJECT_ROOT
/
'templates'
,
MAKO_TEMPLATES
[
'main'
]
=
[
COMMON_ROOT
/
'templates'
,
PROJECT_ROOT
/
'templates'
,
COMMON_ROOT
/
'lib'
/
'capa'
/
'capa'
/
'templates'
,
COMMON_ROOT
/
'templates'
,
COMMON_ROOT
/
'djangoapps'
/
'pipeline_mako'
/
'templates'
]
COMMON_ROOT
/
'lib'
/
'capa'
/
'capa'
/
'templates'
,
COMMON_ROOT
/
'djangoapps'
/
'pipeline_mako'
/
'templates'
,
OPENEDX_ROOT
/
'core'
/
'djangoapps'
/
'dark_lang'
/
'templates'
,
]
# Django templating
# Django templating
TEMPLATES
=
[
TEMPLATES
=
[
...
@@ -1131,12 +1135,12 @@ MIDDLEWARE_CLASSES = (
...
@@ -1131,12 +1135,12 @@ MIDDLEWARE_CLASSES = (
'embargo.middleware.EmbargoMiddleware'
,
'embargo.middleware.EmbargoMiddleware'
,
# Allows us to set user preferences
# Allows us to set user preferences
'lang_pref.middleware.LanguagePreferenceMiddleware'
,
'
openedx.core.djangoapps.
lang_pref.middleware.LanguagePreferenceMiddleware'
,
# Allows us to dark-launch particular languages.
# Allows us to dark-launch particular languages.
# Must be after LangPrefMiddleware, so ?preview-lang query params can override
# Must be after LangPrefMiddleware, so ?preview-lang query params can override
# user's language preference. ?clear-lang resets to user's language preference.
# user's language preference. ?clear-lang resets to user's language preference.
'dark_lang.middleware.DarkLangMiddleware'
,
'
openedx.core.djangoapps.
dark_lang.middleware.DarkLangMiddleware'
,
# Detects user-requested locale from 'accept-language' header in http request.
# Detects user-requested locale from 'accept-language' header in http request.
# Must be after DarkLangMiddleware.
# Must be after DarkLangMiddleware.
...
@@ -2014,7 +2018,7 @@ INSTALLED_APPS = (
...
@@ -2014,7 +2018,7 @@ INSTALLED_APPS = (
'lms.djangoapps.verify_student'
,
'lms.djangoapps.verify_student'
,
# Dark-launching languages
# Dark-launching languages
'dark_lang'
,
'
openedx.core.djangoapps.
dark_lang'
,
# Microsite configuration
# Microsite configuration
'microsite_configuration'
,
'microsite_configuration'
,
...
...
lms/templates/darklang/preview_lang.html
View file @
f2c3fa90
...
@@ -11,5 +11,5 @@ from django.utils.translation import ugettext as _
...
@@ -11,5 +11,5 @@ from django.utils.translation import ugettext as _
<
%
block
name=
"bodyclass"
>
pattern-library
</
%
block>
<
%
block
name=
"bodyclass"
>
pattern-library
</
%
block>
<
%
block
name=
"content"
>
<
%
block
name=
"content"
>
<
%
include
file=
"/darklang/preview_lang_include.html"
/>
<
%
include
file=
"/dark
_
lang/preview_lang_include.html"
/>
</
%
block>
</
%
block>
lms/urls.py
View file @
f2c3fa90
...
@@ -85,14 +85,20 @@ urlpatterns = (
...
@@ -85,14 +85,20 @@ urlpatterns = (
url
(
r'^api/organizations/'
,
include
(
'organizations.urls'
,
namespace
=
'organizations'
)),
url
(
r'^api/organizations/'
,
include
(
'organizations.urls'
,
namespace
=
'organizations'
)),
# Update session view
# Update session view
url
(
r'^lang_pref/session_language'
,
'lang_pref.views.update_session_language'
,
name
=
'session_language'
),
url
(
r'^lang_pref/session_language'
,
'openedx.core.djangoapps.lang_pref.views.update_session_language'
,
name
=
'session_language'
),
# Multiple course modes and identity verification
# Multiple course modes and identity verification
# TODO Namespace these!
# TODO Namespace these!
url
(
r'^course_modes/'
,
include
(
'course_modes.urls'
)),
url
(
r'^course_modes/'
,
include
(
'course_modes.urls'
)),
url
(
r'^verify_student/'
,
include
(
'verify_student.urls'
)),
url
(
r'^verify_student/'
,
include
(
'verify_student.urls'
)),
url
(
r'^update_lang/'
,
include
(
'dark_lang.urls'
,
namespace
=
'darklang'
)),
# URLs for managing dark launches of languages
url
(
r'^update_lang/'
,
include
(
'openedx.core.djangoapps.dark_lang.urls'
,
namespace
=
'dark_lang'
)),
# URLs for API access management
# URLs for API access management
url
(
r'^api-admin/'
,
include
(
'openedx.core.djangoapps.api_admin.urls'
,
namespace
=
'api_admin'
)),
url
(
r'^api-admin/'
,
include
(
'openedx.core.djangoapps.api_admin.urls'
,
namespace
=
'api_admin'
)),
)
)
...
...
common
/djangoapps/dark_lang/__init__.py
→
openedx/core
/djangoapps/dark_lang/__init__.py
View file @
f2c3fa90
File moved
common
/djangoapps/dark_lang/admin.py
→
openedx/core
/djangoapps/dark_lang/admin.py
View file @
f2c3fa90
...
@@ -5,6 +5,6 @@ Admin site bindings for dark_lang
...
@@ -5,6 +5,6 @@ Admin site bindings for dark_lang
from
django.contrib
import
admin
from
django.contrib
import
admin
from
config_models.admin
import
ConfigurationModelAdmin
from
config_models.admin
import
ConfigurationModelAdmin
from
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.
dark_lang.models
import
DarkLangConfig
admin
.
site
.
register
(
DarkLangConfig
,
ConfigurationModelAdmin
)
admin
.
site
.
register
(
DarkLangConfig
,
ConfigurationModelAdmin
)
common
/djangoapps/dark_lang/middleware.py
→
openedx/core
/djangoapps/dark_lang/middleware.py
View file @
f2c3fa90
...
@@ -8,14 +8,14 @@ This middleware must be placed before the LocaleMiddleware, but after
...
@@ -8,14 +8,14 @@ This middleware must be placed before the LocaleMiddleware, but after
the SessionMiddleware.
the SessionMiddleware.
"""
"""
from
django.conf
import
settings
from
django.conf
import
settings
from
django.utils.translation.trans_real
import
parse_accept_lang_header
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
dark_lang
import
DARK_LANGUAGE_KEY
from
openedx.core.djangoapps.
dark_lang
import
DARK_LANGUAGE_KEY
from
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.user_api.preferences.api
import
(
from
openedx.core.djangoapps.user_api.preferences.api
import
(
get_user_preference
get_user_preference
)
)
from
django.utils.translation.trans_real
import
parse_accept_lang_header
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
# 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.
CHINESE_LANGUAGE_CODE_MAP
=
{
CHINESE_LANGUAGE_CODE_MAP
=
{
...
...
common
/djangoapps/dark_lang/migrations/0001_initial.py
→
openedx/core
/djangoapps/dark_lang/migrations/0001_initial.py
View file @
f2c3fa90
File moved
common
/djangoapps/dark_lang/migrations/0002_data__enable_on_install.py
→
openedx/core
/djangoapps/dark_lang/migrations/0002_data__enable_on_install.py
View file @
f2c3fa90
File moved
common
/djangoapps/dark_lang/migrations/__init__.py
→
openedx/core
/djangoapps/dark_lang/migrations/__init__.py
View file @
f2c3fa90
File moved
common
/djangoapps/dark_lang/models.py
→
openedx/core
/djangoapps/dark_lang/models.py
View file @
f2c3fa90
...
@@ -8,13 +8,16 @@ from config_models.models import ConfigurationModel
...
@@ -8,13 +8,16 @@ from config_models.models import ConfigurationModel
class
DarkLangConfig
(
ConfigurationModel
):
class
DarkLangConfig
(
ConfigurationModel
):
"""
"""
Configuration for the dark_lang django app
Configuration for the dark_lang django app
.
"""
"""
released_languages
=
models
.
TextField
(
released_languages
=
models
.
TextField
(
blank
=
True
,
blank
=
True
,
help_text
=
"A comma-separated list of language codes to release to the public."
help_text
=
"A comma-separated list of language codes to release to the public."
)
)
def
__unicode__
(
self
):
return
u"DarkLangConfig()"
@property
@property
def
released_languages_list
(
self
):
def
released_languages_list
(
self
):
"""
"""
...
...
common/templates/dark
lang/preview_lang_include.html
→
openedx/core/djangoapps/dark_lang/templates/dark_
lang/preview_lang_include.html
View file @
f2c3fa90
File moved
common
/djangoapps/dark_lang/tests.py
→
openedx/core
/djangoapps/dark_lang/tests.py
View file @
f2c3fa90
...
@@ -4,15 +4,17 @@ Tests of DarkLangMiddleware
...
@@ -4,15 +4,17 @@ Tests of DarkLangMiddleware
import
unittest
import
unittest
import
ddt
import
ddt
from
mock
import
Mock
from
django.http
import
HttpRequest
from
django.http
import
HttpRequest
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.test.client
import
Client
from
django.test.client
import
Client
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
mock
import
Mock
from
dark_lang.middleware
import
DarkLangMiddleware
from
openedx.core.djangoapps.
dark_lang.middleware
import
DarkLangMiddleware
from
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.
dark_lang.models
import
DarkLangConfig
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
UNSET
=
object
()
UNSET
=
object
()
...
...
common
/djangoapps/dark_lang/urls.py
→
openedx/core
/djangoapps/dark_lang/urls.py
View file @
f2c3fa90
...
@@ -4,7 +4,7 @@ Contains all the URLs for the Dark Language Support App
...
@@ -4,7 +4,7 @@ Contains all the URLs for the Dark Language Support App
from
django.conf.urls
import
patterns
,
url
from
django.conf.urls
import
patterns
,
url
from
dark_lang
import
views
from
openedx.core.djangoapps.
dark_lang
import
views
urlpatterns
=
patterns
(
urlpatterns
=
patterns
(
''
,
''
,
...
...
common
/djangoapps/dark_lang/views.py
→
openedx/core
/djangoapps/dark_lang/views.py
View file @
f2c3fa90
...
@@ -6,16 +6,15 @@ from django.utils.decorators import method_decorator
...
@@ -6,16 +6,15 @@ from django.utils.decorators import method_decorator
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
django.views.generic.base
import
View
from
django.views.generic.base
import
View
from
edxmako.shortcuts
import
render_to_response
from
openedx.core.djangoapps.dark_lang
import
DARK_LANGUAGE_KEY
from
openedx.core.djangoapps.dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.user_api.preferences.api
import
(
from
openedx.core.djangoapps.user_api.preferences.api
import
(
delete_user_preference
,
get_user_preference
,
set_user_preference
delete_user_preference
,
get_user_preference
,
set_user_preference
)
)
from
openedx.core.lib.api.view_utils
import
view_auth_classes
from
openedx.core.lib.api.view_utils
import
view_auth_classes
from
dark_lang
import
DARK_LANGUAGE_KEY
from
dark_lang.models
import
DarkLangConfig
from
edxmako.shortcuts
import
render_to_response
from
lang_pref
import
LANGUAGE_KEY
LANGUAGE_INPUT_FIELD
=
'preview_lang'
LANGUAGE_INPUT_FIELD
=
'preview_lang'
...
...
common
/djangoapps/lang_pref/__init__.py
→
openedx/core
/djangoapps/lang_pref/__init__.py
View file @
f2c3fa90
File moved
common
/djangoapps/lang_pref/api.py
→
openedx/core
/djangoapps/lang_pref/api.py
View file @
f2c3fa90
...
@@ -5,7 +5,7 @@ from collections import namedtuple
...
@@ -5,7 +5,7 @@ from collections import namedtuple
from
django.conf
import
settings
from
django.conf
import
settings
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.
dark_lang.models
import
DarkLangConfig
# Named tuples can be referenced using object-like variable
# Named tuples can be referenced using object-like variable
...
@@ -38,15 +38,13 @@ def released_languages():
...
@@ -38,15 +38,13 @@ def released_languages():
released_language_codes
.
sort
()
released_language_codes
.
sort
()
# Intersect the list of valid language tuples with the list
# Intersect the list of valid language tuples with the list
# of release language codes
# of release
d
language codes
re
leased_languages
=
[
re
turn
[
Language
(
tuple
[
0
],
tuple
[
1
])
Language
(
language_info
[
0
],
language_info
[
1
])
for
tuple
in
settings
.
LANGUAGES
for
language_info
in
settings
.
LANGUAGES
if
tuple
[
0
]
in
released_language_codes
if
language_info
[
0
]
in
released_language_codes
]
]
return
released_languages
def
all_languages
():
def
all_languages
():
"""Retrieve the list of all languages, translated and sorted.
"""Retrieve the list of all languages, translated and sorted.
...
...
common
/djangoapps/lang_pref/middleware.py
→
openedx/core
/djangoapps/lang_pref/middleware.py
View file @
f2c3fa90
...
@@ -2,11 +2,12 @@
...
@@ -2,11 +2,12 @@
Middleware for Language Preferences
Middleware for Language Preferences
"""
"""
from
openedx.core.djangoapps.user_api.preferences.api
import
get_user_preference
,
delete_user_preference
from
lang_pref
import
LANGUAGE_KEY
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation.trans_real
import
parse_accept_lang_header
from
django.utils.translation.trans_real
import
parse_accept_lang_header
from
lang_pref.api
import
released_languages
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.lang_pref.api
import
released_languages
from
openedx.core.djangoapps.user_api.preferences.api
import
get_user_preference
,
delete_user_preference
class
LanguagePreferenceMiddleware
(
object
):
class
LanguagePreferenceMiddleware
(
object
):
...
...
common
/djangoapps/lang_pref/tests/__init__.py
→
openedx/core
/djangoapps/lang_pref/tests/__init__.py
View file @
f2c3fa90
File moved
common
/djangoapps/lang_pref/tests/test_api.py
→
openedx/core
/djangoapps/lang_pref/tests/test_api.py
View file @
f2c3fa90
...
@@ -4,17 +4,26 @@
...
@@ -4,17 +4,26 @@
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.utils
import
translation
from
django.utils
import
translation
from
lang_pref
import
api
as
language_api
from
openedx.core.djangoapps.lang_pref
import
api
as
language_api
class
LanguageApiTest
(
TestCase
):
class
LanguageApiTest
(
TestCase
):
"""
Tests of the language APIs.
"""
def
test_released_languages
(
self
):
def
test_released_languages
(
self
):
"""
Tests for the released languages.
"""
released_languages
=
language_api
.
released_languages
()
released_languages
=
language_api
.
released_languages
()
self
.
assertGreaterEqual
(
len
(
released_languages
),
1
)
self
.
assertGreaterEqual
(
len
(
released_languages
),
1
)
@override_settings
(
ALL_LANGUAGES
=
[[
u"cs"
,
u"Czech"
],
[
u"nl"
,
u"Dutch"
]])
@override_settings
(
ALL_LANGUAGES
=
[[
u"cs"
,
u"Czech"
],
[
u"nl"
,
u"Dutch"
]])
def
test_all_languages
(
self
):
def
test_all_languages
(
self
):
"""
Tests for the list of all languages.
"""
with
translation
.
override
(
'fr'
):
with
translation
.
override
(
'fr'
):
all_languages
=
language_api
.
all_languages
()
all_languages
=
language_api
.
all_languages
()
...
...
common
/djangoapps/lang_pref/tests/test_middleware.py
→
openedx/core
/djangoapps/lang_pref/tests/test_middleware.py
View file @
f2c3fa90
"""
Tests for lang_pref middleware.
"""
import
mock
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.test.client
import
RequestFactory
from
django.test.client
import
RequestFactory
from
django.contrib.sessions.middleware
import
SessionMiddleware
from
django.contrib.sessions.middleware
import
SessionMiddleware
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
lang_pref.middleware
import
LanguagePreferenceMiddleware
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.lang_pref.middleware
import
LanguagePreferenceMiddleware
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
,
get_user_preference
from
openedx.core.djangoapps.user_api.preferences.api
import
set_user_preference
,
get_user_preference
from
lang_pref
import
LANGUAGE_KEY
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
AnonymousUserFactory
from
student.tests.factories
import
AnonymousUserFactory
import
mock
class
TestUserPreferenceMiddleware
(
TestCase
):
class
TestUserPreferenceMiddleware
(
TestCase
):
"""
"""
Tests to make sure user preferences are getting properly set in the middleware
Tests to make sure user preferences are getting properly set in the middleware
.
"""
"""
def
setUp
(
self
):
def
setUp
(
self
):
...
@@ -30,18 +35,22 @@ class TestUserPreferenceMiddleware(TestCase):
...
@@ -30,18 +35,22 @@ class TestUserPreferenceMiddleware(TestCase):
def
test_no_language_set_in_session_or_prefs
(
self
):
def
test_no_language_set_in_session_or_prefs
(
self
):
# nothing set in the session or the prefs
# nothing set in the session or the prefs
self
.
middleware
.
process_request
(
self
.
request
)
self
.
middleware
.
process_request
(
self
.
request
)
self
.
assertNotIn
(
LANGUAGE_SESSION_KEY
,
self
.
request
.
session
)
self
.
assertNotIn
(
LANGUAGE_SESSION_KEY
,
self
.
request
.
session
)
# pylint: disable=no-member
@mock.patch
(
'lang_pref.middleware.released_languages'
,
mock
.
Mock
(
return_value
=
[(
'eo'
,
'esperanto'
)]))
@mock.patch
(
'openedx.core.djangoapps.lang_pref.middleware.released_languages'
,
mock
.
Mock
(
return_value
=
[(
'eo'
,
'esperanto'
)])
)
def
test_language_in_user_prefs
(
self
):
def
test_language_in_user_prefs
(
self
):
# language set in the user preferences and not the session
# language set in the user preferences and not the session
set_user_preference
(
self
.
user
,
LANGUAGE_KEY
,
'eo'
)
set_user_preference
(
self
.
user
,
LANGUAGE_KEY
,
'eo'
)
self
.
middleware
.
process_request
(
self
.
request
)
self
.
middleware
.
process_request
(
self
.
request
)
self
.
assertEquals
(
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
],
'eo'
)
self
.
assertEquals
(
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
],
'eo'
)
# pylint: disable=no-member
@mock.patch
(
'lang_pref.middleware.released_languages'
,
mock
.
Mock
(
@mock.patch
(
return_value
=
[(
'en'
,
'english'
),
(
'eo'
,
'esperanto'
)]
'openedx.core.djangoapps.lang_pref.middleware.released_languages'
,
))
mock
.
Mock
(
return_value
=
[(
'en'
,
'english'
),
(
'eo'
,
'esperanto'
)])
)
def
test_language_in_session
(
self
):
def
test_language_in_session
(
self
):
# language set in both the user preferences and session,
# language set in both the user preferences and session,
# preference should get precedence. The session will hold the last value,
# preference should get precedence. The session will hold the last value,
...
@@ -49,14 +58,16 @@ class TestUserPreferenceMiddleware(TestCase):
...
@@ -49,14 +58,16 @@ class TestUserPreferenceMiddleware(TestCase):
# Dark lang middleware should run after this middleware, so it can
# Dark lang middleware should run after this middleware, so it can
# set a session language as an override of the user's preference.
# set a session language as an override of the user's preference.
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
]
=
'en'
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
]
=
'en'
# pylint: disable=no-member
set_user_preference
(
self
.
user
,
LANGUAGE_KEY
,
'eo'
)
set_user_preference
(
self
.
user
,
LANGUAGE_KEY
,
'eo'
)
self
.
middleware
.
process_request
(
self
.
request
)
self
.
middleware
.
process_request
(
self
.
request
)
self
.
assertEquals
(
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
],
'eo'
)
self
.
assertEquals
(
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
],
'eo'
)
# pylint: disable=no-member
@mock.patch
(
'lang_pref.middleware.released_languages'
,
@mock.patch
(
mock
.
Mock
(
return_value
=
[(
'eo'
,
'dummy Esperanto'
),
(
'ar'
,
'arabic'
)]))
'openedx.core.djangoapps.lang_pref.middleware.released_languages'
,
mock
.
Mock
(
return_value
=
[(
'eo'
,
'dummy Esperanto'
),
(
'ar'
,
'arabic'
)])
)
def
test_supported_browser_language_in_session
(
self
):
def
test_supported_browser_language_in_session
(
self
):
"""
"""
test: browser language should be set in user session if it is supported by system for unauthenticated user.
test: browser language should be set in user session if it is supported by system for unauthenticated user.
...
@@ -65,7 +76,10 @@ class TestUserPreferenceMiddleware(TestCase):
...
@@ -65,7 +76,10 @@ class TestUserPreferenceMiddleware(TestCase):
self
.
middleware
.
process_request
(
self
.
request
)
self
.
middleware
.
process_request
(
self
.
request
)
self
.
assertEqual
(
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
],
'ar'
)
# pylint: disable=no-member
self
.
assertEqual
(
self
.
request
.
session
[
LANGUAGE_SESSION_KEY
],
'ar'
)
# pylint: disable=no-member
@mock.patch
(
'lang_pref.middleware.released_languages'
,
mock
.
Mock
(
return_value
=
[(
'en'
,
'english'
)]))
@mock.patch
(
'openedx.core.djangoapps.lang_pref.middleware.released_languages'
,
mock
.
Mock
(
return_value
=
[(
'en'
,
'english'
)])
)
def
test_browser_language_not_be_in_session
(
self
):
def
test_browser_language_not_be_in_session
(
self
):
"""
"""
test: browser language should not be set in user session if it is not supported by system.
test: browser language should not be set in user session if it is not supported by system.
...
@@ -74,9 +88,10 @@ class TestUserPreferenceMiddleware(TestCase):
...
@@ -74,9 +88,10 @@ class TestUserPreferenceMiddleware(TestCase):
self
.
middleware
.
process_request
(
self
.
request
)
self
.
middleware
.
process_request
(
self
.
request
)
self
.
assertNotEqual
(
self
.
request
.
session
.
get
(
LANGUAGE_SESSION_KEY
),
'ar'
)
# pylint: disable=no-member
self
.
assertNotEqual
(
self
.
request
.
session
.
get
(
LANGUAGE_SESSION_KEY
),
'ar'
)
# pylint: disable=no-member
@mock.patch
(
'lang_pref.middleware.released_languages'
,
mock
.
Mock
(
@mock.patch
(
return_value
=
[(
'en'
,
'english'
),
(
'ar'
,
'arabic'
)]
'openedx.core.djangoapps.lang_pref.middleware.released_languages'
,
))
mock
.
Mock
(
return_value
=
[(
'en'
,
'english'
),
(
'ar'
,
'arabic'
)])
)
def
test_delete_user_lang_preference_not_supported_by_system
(
self
):
def
test_delete_user_lang_preference_not_supported_by_system
(
self
):
"""
"""
test: user preferred language has been removed from user preferences model if it is not supported by system
test: user preferred language has been removed from user preferences model if it is not supported by system
...
...
common
/djangoapps/lang_pref/tests/test_views.py
→
openedx/core
/djangoapps/lang_pref/tests/test_views.py
View file @
f2c3fa90
File moved
common
/djangoapps/lang_pref/views.py
→
openedx/core
/djangoapps/lang_pref/views.py
View file @
f2c3fa90
"""
"""
Language Preference Views
Language Preference Views
"""
"""
import
json
import
json
from
django.conf
import
settings
from
django.conf
import
settings
from
django.http
import
HttpResponse
from
django.views.decorators.csrf
import
ensure_csrf_cookie
from
django.views.decorators.csrf
import
ensure_csrf_cookie
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
lang_pref
import
LANGUAGE_KEY
from
django.http
import
HttpResponse
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
@ensure_csrf_cookie
@ensure_csrf_cookie
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment