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
4d4097e1
Commit
4d4097e1
authored
Oct 06, 2016
by
Andy Armstrong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move dark_lang and lang_pref apps to openedx/core
parent
14d8a46d
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 @
4d4097e1
...
...
@@ -226,6 +226,7 @@ SOCIAL_SHARING_SETTINGS = {
PROJECT_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
.
dirname
()
# /edx-platform/cms
REPO_ROOT
=
PROJECT_ROOT
.
dirname
()
COMMON_ROOT
=
REPO_ROOT
/
"common"
OPENEDX_ROOT
=
REPO_ROOT
/
"openedx"
CMS_ROOT
=
REPO_ROOT
/
"cms"
LMS_ROOT
=
REPO_ROOT
/
"lms"
ENV_ROOT
=
REPO_ROOT
.
dirname
()
# virtualenv dir /edx-platform is in
...
...
@@ -251,6 +252,7 @@ MAKO_TEMPLATES['main'] = [
COMMON_ROOT
/
'templates'
,
COMMON_ROOT
/
'djangoapps'
/
'pipeline_mako'
/
'templates'
,
COMMON_ROOT
/
'static'
,
# required to statically include common Underscore templates
OPENEDX_ROOT
/
'core'
/
'djangoapps'
/
'dark_lang'
/
'templates'
,
CMS_ROOT
/
'djangoapps'
/
'pipeline_js'
/
'templates'
,
]
...
...
@@ -360,10 +362,10 @@ MIDDLEWARE_CLASSES = (
'track.middleware.TrackMiddleware'
,
# 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
'dark_lang.middleware.DarkLangMiddleware'
,
'
openedx.core.djangoapps.
dark_lang.middleware.DarkLangMiddleware'
,
'embargo.middleware.EmbargoMiddleware'
,
...
...
@@ -856,7 +858,7 @@ INSTALLED_APPS = (
'course_modes'
,
# Dark-launching languages
'dark_lang'
,
'
openedx.core.djangoapps.
dark_lang'
,
# User preferences
'openedx.core.djangoapps.user_api'
,
...
...
cms/templates/darklang/preview_lang.html
View file @
4d4097e1
...
...
@@ -10,6 +10,6 @@ from django.utils.translation import ugettext as _
<
%
block
name=
"bodyclass"
>
is-signedin pattern-library
</
%
block>
<
%
block
name=
"content"
>
<
%
include
file=
"/darklang/preview_lang_include.html"
/>
<
%
include
file=
"/dark
_
lang/preview_lang_include.html"
/>
</
%
block>
cms/urls.py
View file @
4d4097e1
...
...
@@ -55,10 +55,14 @@ urlpatterns = patterns(
url
(
r'^api/user/'
,
include
(
'openedx.core.djangoapps.user_api.urls'
)),
# 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)
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
...
...
common/djangoapps/pipeline_mako/templates/static_content.html
View file @
4d4097e1
...
...
@@ -17,7 +17,7 @@ from openedx.core.djangoapps.theming.helpers import (
is_request_in_themed_site
,
)
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)"
><
%
...
...
common/djangoapps/student/tests/test_create_account.py
View file @
4d4097e1
...
...
@@ -15,7 +15,7 @@ import mock
import
pytz
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
openedx.core.djangoapps.external_auth.models
import
ExternalAuthMap
import
student
...
...
common/djangoapps/student/views.py
View file @
4d4097e1
...
...
@@ -85,8 +85,6 @@ from openedx.core.djangoapps.external_auth.login_and_register import (
register
as
external_auth_register
)
from
lang_pref
import
LANGUAGE_KEY
import
track.views
import
dogstats_wrapper
as
dog_stats_api
...
...
@@ -120,11 +118,12 @@ from eventtracking import tracker
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.user_api.preferences
import
api
as
preferences_api
from
openedx.core.djangoapps.programs.models
import
ProgramsApiConfig
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
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.theming
import
helpers
as
theming_helpers
from
openedx.core.djangoapps.user_api.preferences
import
api
as
preferences_api
log
=
logging
.
getLogger
(
"edx.student"
)
...
...
lms/djangoapps/courseware/tests/test_i18n.py
View file @
4d4097e1
"""
Tests i18n in courseware
"""
import
re
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.core.urlresolvers
import
reverse
...
...
@@ -9,10 +11,10 @@ from django.test import TestCase
from
django.test.client
import
Client
from
django.utils
import
translation
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
lang_pref
import
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
set_user_preference
from
student.tests.factories
import
UserFactory
...
...
lms/djangoapps/courseware/views/index.py
View file @
4d4097e1
...
...
@@ -22,10 +22,10 @@ import logging
import
newrelic.agent
import
urllib
from
lang_pref
import
LANGUAGE_KEY
from
xblock.fragment
import
Fragment
from
opaque_keys.edx.keys
import
CourseKey
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
shoppingcart.models
import
CourseRegistrationCode
from
student.models
import
CourseEnrollment
...
...
lms/djangoapps/instructor/enrollment.py
View file @
4d4097e1
...
...
@@ -14,21 +14,19 @@ from django.core.mail import send_mail
from
django.utils.translation
import
override
as
override_language
from
course_modes.models
import
CourseMode
from
courseware.models
import
StudentModule
from
courseware.model_data
import
FieldDataCache
from
courseware.module_render
import
get_module_for_descriptor
from
courseware.models
import
StudentModule
from
edxmako.shortcuts
import
render_to_string
from
lms.djangoapps.grades.scores
import
weighted_score
from
lms.djangoapps.grades.signals.signals
import
SCORE_CHANGED
from
lang_pref
import
LANGUAGE_KEY
from
student.models
import
CourseEnrollment
,
CourseEnrollmentAllowed
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.lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
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.exceptions
import
ItemNotFoundError
from
openedx.core.djangoapps.site_configuration
import
helpers
as
configuration_helpers
log
=
logging
.
getLogger
(
__name__
)
...
...
lms/djangoapps/instructor/tests/test_api_email_localization.py
View file @
4d4097e1
...
...
@@ -9,10 +9,10 @@ from django.test.utils import override_settings
from
nose.plugins.attrib
import
attr
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.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.django_utils
import
SharedModuleStoreTestCase
...
...
lms/djangoapps/notifier_api/serializers.py
View file @
4d4097e1
...
...
@@ -3,8 +3,9 @@ from django.http import Http404
from
rest_framework
import
serializers
from
openedx.core.djangoapps.course_groups.cohorts
import
is_course_cohorted
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
lang_pref
import
LANGUAGE_KEY
from
openedx.core.djangoapps.lang_pref
import
LANGUAGE_KEY
from
lms.djangoapps.notification_prefs
import
NOTIFICATION_PREF_KEY
class
NotifierUserSerializer
(
serializers
.
ModelSerializer
):
...
...
lms/djangoapps/notifier_api/tests.py
View file @
4d4097e1
...
...
@@ -5,14 +5,14 @@ from django.conf import settings
from
django.test.client
import
RequestFactory
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
lang_pref
import
LANGUAGE_KEY
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
notifier_api.views
import
NotifierUsersViewSet
from
opaque_keys.edx.locator
import
CourseLocator
from
student.models
import
CourseEnrollment
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.tests.factories
import
UserPreferenceFactory
from
util.testing
import
UrlResetMixin
...
...
lms/djangoapps/oauth2_handler/handlers.py
View file @
4d4097e1
...
...
@@ -5,10 +5,10 @@ from django.core.cache import cache
from
courseware.access
import
has_access
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
student.models
import
anonymous_id_for_user
from
student.models
import
UserProfile
from
lang_pref
import
LANGUAGE_KEY
from
student.roles
import
GlobalStaff
,
CourseStaffRole
,
CourseInstructorRole
...
...
lms/djangoapps/oauth2_handler/tests.py
View file @
4d4097e1
# pylint: disable=missing-docstring
from
django.core.cache
import
cache
from
django.test.utils
import
override_settings
from
lang_pref
import
LANGUAGE_KEY
from
xmodule.modulestore.tests.factories
import
(
check_mongo_calls
,
CourseFactory
)
from
student.models
import
anonymous_id_for_user
...
...
@@ -9,6 +8,7 @@ from student.models import UserProfile
from
student.roles
import
(
CourseInstructorRole
,
CourseStaffRole
,
GlobalStaff
,
OrgInstructorRole
,
OrgStaffRole
)
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
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
...
...
lms/djangoapps/student_account/views.py
View file @
4d4097e1
...
...
@@ -26,11 +26,11 @@ from openedx.core.djangoapps.external_auth.login_and_register import (
login
as
external_auth_login
,
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.lang_pref.api
import
released_languages
,
all_languages
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.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.errors
import
UserNotFound
from
openedx.core.lib.time_zone_utils
import
TIME_ZONE_CHOICES
...
...
lms/envs/common.py
View file @
4d4097e1
...
...
@@ -380,6 +380,7 @@ XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds
PROJECT_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
.
dirname
()
# /edx-platform/lms
REPO_ROOT
=
PROJECT_ROOT
.
dirname
()
COMMON_ROOT
=
REPO_ROOT
/
"common"
OPENEDX_ROOT
=
REPO_ROOT
/
"openedx"
ENV_ROOT
=
REPO_ROOT
.
dirname
()
# virtualenv dir /edx-platform is in
COURSES_ROOT
=
ENV_ROOT
/
"data"
...
...
@@ -460,10 +461,13 @@ OAUTH2_PROVIDER = {
import
tempfile
MAKO_MODULE_DIR
=
os
.
path
.
join
(
tempfile
.
gettempdir
(),
'mako_lms'
)
MAKO_TEMPLATES
=
{}
MAKO_TEMPLATES
[
'main'
]
=
[
PROJECT_ROOT
/
'templates'
,
COMMON_ROOT
/
'templates'
,
COMMON_ROOT
/
'lib'
/
'capa'
/
'capa'
/
'templates'
,
COMMON_ROOT
/
'djangoapps'
/
'pipeline_mako'
/
'templates'
]
MAKO_TEMPLATES
[
'main'
]
=
[
PROJECT_ROOT
/
'templates'
,
COMMON_ROOT
/
'templates'
,
COMMON_ROOT
/
'lib'
/
'capa'
/
'capa'
/
'templates'
,
COMMON_ROOT
/
'djangoapps'
/
'pipeline_mako'
/
'templates'
,
OPENEDX_ROOT
/
'core'
/
'djangoapps'
/
'dark_lang'
/
'templates'
,
]
# Django templating
TEMPLATES
=
[
...
...
@@ -1131,12 +1135,12 @@ MIDDLEWARE_CLASSES = (
'embargo.middleware.EmbargoMiddleware'
,
# Allows us to set user preferences
'lang_pref.middleware.LanguagePreferenceMiddleware'
,
'
openedx.core.djangoapps.
lang_pref.middleware.LanguagePreferenceMiddleware'
,
# Allows us to dark-launch particular languages.
# Must be after LangPrefMiddleware, so ?preview-lang query params can override
# 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.
# Must be after DarkLangMiddleware.
...
...
@@ -2014,7 +2018,7 @@ INSTALLED_APPS = (
'lms.djangoapps.verify_student'
,
# Dark-launching languages
'dark_lang'
,
'
openedx.core.djangoapps.
dark_lang'
,
# Microsite configuration
'microsite_configuration'
,
...
...
lms/templates/darklang/preview_lang.html
View file @
4d4097e1
...
...
@@ -11,5 +11,5 @@ from django.utils.translation import ugettext as _
<
%
block
name=
"bodyclass"
>
pattern-library
</
%
block>
<
%
block
name=
"content"
>
<
%
include
file=
"/darklang/preview_lang_include.html"
/>
<
%
include
file=
"/dark
_
lang/preview_lang_include.html"
/>
</
%
block>
lms/urls.py
View file @
4d4097e1
...
...
@@ -85,14 +85,20 @@ urlpatterns = (
url
(
r'^api/organizations/'
,
include
(
'organizations.urls'
,
namespace
=
'organizations'
)),
# 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
# TODO Namespace these!
url
(
r'^course_modes/'
,
include
(
'course_modes.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
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 @
4d4097e1
File moved
common
/djangoapps/dark_lang/admin.py
→
openedx/core
/djangoapps/dark_lang/admin.py
View file @
4d4097e1
...
...
@@ -5,6 +5,6 @@ Admin site bindings for dark_lang
from
django.contrib
import
admin
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
)
common
/djangoapps/dark_lang/middleware.py
→
openedx/core
/djangoapps/dark_lang/middleware.py
View file @
4d4097e1
...
...
@@ -8,14 +8,14 @@ This middleware must be placed before the LocaleMiddleware, but after
the SessionMiddleware.
"""
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
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.
dark_lang
import
DARK_LANGUAGE_KEY
from
openedx.core.djangoapps.
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.user_api.preferences.api
import
(
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.
CHINESE_LANGUAGE_CODE_MAP
=
{
...
...
common
/djangoapps/dark_lang/migrations/0001_initial.py
→
openedx/core
/djangoapps/dark_lang/migrations/0001_initial.py
View file @
4d4097e1
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 @
4d4097e1
File moved
common
/djangoapps/dark_lang/migrations/__init__.py
→
openedx/core
/djangoapps/dark_lang/migrations/__init__.py
View file @
4d4097e1
File moved
common
/djangoapps/dark_lang/models.py
→
openedx/core
/djangoapps/dark_lang/models.py
View file @
4d4097e1
...
...
@@ -8,13 +8,16 @@ from config_models.models import ConfigurationModel
class
DarkLangConfig
(
ConfigurationModel
):
"""
Configuration for the dark_lang django app
Configuration for the dark_lang django app
.
"""
released_languages
=
models
.
TextField
(
blank
=
True
,
help_text
=
"A comma-separated list of language codes to release to the public."
)
def
__unicode__
(
self
):
return
u"DarkLangConfig()"
@property
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 @
4d4097e1
File moved
common
/djangoapps/dark_lang/tests.py
→
openedx/core
/djangoapps/dark_lang/tests.py
View file @
4d4097e1
...
...
@@ -4,15 +4,17 @@ Tests of DarkLangMiddleware
import
unittest
import
ddt
from
mock
import
Mock
from
django.http
import
HttpRequest
from
django.test
import
TestCase
from
django.test.client
import
Client
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
mock
import
Mock
from
dark_lang.middleware
import
DarkLangMiddleware
from
dark_lang.models
import
DarkLangConfig
from
openedx.core.djangoapps.
dark_lang.middleware
import
DarkLangMiddleware
from
openedx.core.djangoapps.
dark_lang.models
import
DarkLangConfig
from
student.tests.factories
import
UserFactory
UNSET
=
object
()
...
...
common
/djangoapps/dark_lang/urls.py
→
openedx/core
/djangoapps/dark_lang/urls.py
View file @
4d4097e1
...
...
@@ -4,7 +4,7 @@ Contains all the URLs for the Dark Language Support App
from
django.conf.urls
import
patterns
,
url
from
dark_lang
import
views
from
openedx.core.djangoapps.
dark_lang
import
views
urlpatterns
=
patterns
(
''
,
...
...
common
/djangoapps/dark_lang/views.py
→
openedx/core
/djangoapps/dark_lang/views.py
View file @
4d4097e1
...
...
@@ -6,16 +6,15 @@ from django.utils.decorators import method_decorator
from
django.utils.translation
import
LANGUAGE_SESSION_KEY
from
django.utils.translation
import
ugettext
as
_
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
(
delete_user_preference
,
get_user_preference
,
set_user_preference
)
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'
...
...
common
/djangoapps/lang_pref/__init__.py
→
openedx/core
/djangoapps/lang_pref/__init__.py
View file @
4d4097e1
File moved
common
/djangoapps/lang_pref/api.py
→
openedx/core
/djangoapps/lang_pref/api.py
View file @
4d4097e1
...
...
@@ -5,7 +5,7 @@ from collections import namedtuple
from
django.conf
import
settings
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
...
...
@@ -38,15 +38,13 @@ def released_languages():
released_language_codes
.
sort
()
# Intersect the list of valid language tuples with the list
# of release language codes
re
leased_languages
=
[
Language
(
tuple
[
0
],
tuple
[
1
])
for
tuple
in
settings
.
LANGUAGES
if
tuple
[
0
]
in
released_language_codes
# of release
d
language codes
re
turn
[
Language
(
language_info
[
0
],
language_info
[
1
])
for
language_info
in
settings
.
LANGUAGES
if
language_info
[
0
]
in
released_language_codes
]
return
released_languages
def
all_languages
():
"""Retrieve the list of all languages, translated and sorted.
...
...
common
/djangoapps/lang_pref/middleware.py
→
openedx/core
/djangoapps/lang_pref/middleware.py
View file @
4d4097e1
...
...
@@ -2,11 +2,12 @@
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.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
):
...
...
common
/djangoapps/lang_pref/tests/__init__.py
→
openedx/core
/djangoapps/lang_pref/tests/__init__.py
View file @
4d4097e1
File moved
common
/djangoapps/lang_pref/tests/test_api.py
→
openedx/core
/djangoapps/lang_pref/tests/test_api.py
View file @
4d4097e1
...
...
@@ -4,17 +4,26 @@
from
django.test
import
TestCase
from
django.test.utils
import
override_settings
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
):
"""
Tests for the released languages.
"""
released_languages
=
language_api
.
released_languages
()
self
.
assertGreaterEqual
(
len
(
released_languages
),
1
)
@override_settings
(
ALL_LANGUAGES
=
[[
u"cs"
,
u"Czech"
],
[
u"nl"
,
u"Dutch"
]])
def
test_all_languages
(
self
):
"""
Tests for the list of all languages.
"""
with
translation
.
override
(
'fr'
):
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 @
4d4097e1
"""
Tests for lang_pref middleware.
"""
import
mock
from
django.test
import
TestCase
from
django.test.client
import
RequestFactory
from
django.contrib.sessions.middleware
import
SessionMiddleware
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
lang_pref
import
LANGUAGE_KEY
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
AnonymousUserFactory
import
mock
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
):
...
...
@@ -30,18 +35,22 @@ class TestUserPreferenceMiddleware(TestCase):
def
test_no_language_set_in_session_or_prefs
(
self
):
# nothing set in the session or the prefs
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
):
# language set in the user preferences and not the session
set_user_preference
(
self
.
user
,
LANGUAGE_KEY
,
'eo'
)
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
(
return_value
=
[(
'en'
,
'english'
),
(
'eo'
,
'esperanto'
)]
))
@mock.patch
(
'openedx.core.djangoapps.lang_pref.middleware.released_languages'
,
mock
.
Mock
(
return_value
=
[(
'en'
,
'english'
),
(
'eo'
,
'esperanto'
)])
)
def
test_language_in_session
(
self
):
# language set in both the user preferences and session,
# preference should get precedence. The session will hold the last value,
...
...
@@ -49,14 +58,16 @@ class TestUserPreferenceMiddleware(TestCase):
# Dark lang middleware should run after this middleware, so it can
# 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'
)
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
(
return_value
=
[(
'eo'
,
'dummy Esperanto'
),
(
'ar'
,
'arabic'
)]))
@mock.patch
(
'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
):
"""
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):
self
.
middleware
.
process_request
(
self
.
request
)
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
):
"""
test: browser language should not be set in user session if it is not supported by system.
...
...
@@ -74,9 +88,10 @@ class TestUserPreferenceMiddleware(TestCase):
self
.
middleware
.
process_request
(
self
.
request
)
self
.
assertNotEqual
(
self
.
request
.
session
.
get
(
LANGUAGE_SESSION_KEY
),
'ar'
)
# pylint: disable=no-member
@mock.patch
(
'lang_pref.middleware.released_languages'
,
mock
.
Mock
(
return_value
=
[(
'en'
,
'english'
),
(
'ar'
,
'arabic'
)]
))
@mock.patch
(
'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
):
"""
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 @
4d4097e1
File moved
common
/djangoapps/lang_pref/views.py
→
openedx/core
/djangoapps/lang_pref/views.py
View file @
4d4097e1
"""
Language Preference Views
"""
import
json
from
django.conf
import
settings
from
django.http
import
HttpResponse
from
django.views.decorators.csrf
import
ensure_csrf_cookie
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
...
...
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