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
ab912fa8
Commit
ab912fa8
authored
May 15, 2015
by
Muzaffar yousaf
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #7956 from edx/muzaffar/tnl2047-profile-tweaks
Learner Profile page tweaks.
parents
36060f3f
cae5623f
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
319 additions
and
386 deletions
+319
-386
common/test/acceptance/tests/lms/test_learner_profile.py
+1
-1
lms/djangoapps/student_account/views.py
+1
-8
lms/djangoapps/student_profile/test/test_views.py
+6
-1
lms/djangoapps/student_profile/views.py
+27
-18
lms/static/js/spec/student_profile/learner_profile_factory_spec.js
+11
-67
lms/static/js/student_account/models/user_account_model.js
+2
-2
lms/static/js/student_profile/views/learner_profile_factory.js
+11
-25
lms/static/js/views/fields.js
+4
-0
lms/static/sass/views/_learner-profile.scss
+0
-1
lms/templates/register.html
+1
-1
lms/templates/student_profile/learner_profile.html
+2
-1
openedx/core/djangoapps/user_api/tests/test_constants.py
+250
-250
openedx/core/djangoapps/user_api/views.py
+1
-10
requirements/edx/base.txt
+2
-1
No files found.
common/test/acceptance/tests/lms/test_learner_profile.py
View file @
ab912fa8
...
@@ -47,7 +47,7 @@ class LearnerProfileTestMixin(EventsTestMixin):
...
@@ -47,7 +47,7 @@ class LearnerProfileTestMixin(EventsTestMixin):
Fill in the public profile fields of a user.
Fill in the public profile fields of a user.
"""
"""
profile_page
.
value_for_dropdown_field
(
'language_proficiencies'
,
'English'
)
profile_page
.
value_for_dropdown_field
(
'language_proficiencies'
,
'English'
)
profile_page
.
value_for_dropdown_field
(
'country'
,
'United
Kingdom
'
)
profile_page
.
value_for_dropdown_field
(
'country'
,
'United
Arab Emirates
'
)
profile_page
.
value_for_textarea_field
(
'bio'
,
'Nothing Special'
)
profile_page
.
value_for_textarea_field
(
'bio'
,
'Nothing Special'
)
def
visit_profile_page
(
self
,
username
,
privacy
=
None
):
def
visit_profile_page
(
self
,
username
,
privacy
=
None
):
...
...
lms/djangoapps/student_account/views.py
View file @
ab912fa8
...
@@ -338,13 +338,6 @@ def account_settings_context(request):
...
@@ -338,13 +338,6 @@ def account_settings_context(request):
"""
"""
user
=
request
.
user
user
=
request
.
user
country_options
=
[
(
country_code
,
_
(
country_name
))
# pylint: disable=translation-of-non-string
for
country_code
,
country_name
in
sorted
(
countries
.
countries
,
key
=
lambda
(
__
,
name
):
unicode
(
name
)
)
]
year_of_birth_options
=
[(
unicode
(
year
),
unicode
(
year
))
for
year
in
UserProfile
.
VALID_YEARS
]
year_of_birth_options
=
[(
unicode
(
year
),
unicode
(
year
))
for
year
in
UserProfile
.
VALID_YEARS
]
context
=
{
context
=
{
...
@@ -352,7 +345,7 @@ def account_settings_context(request):
...
@@ -352,7 +345,7 @@ def account_settings_context(request):
'duplicate_provider'
:
None
,
'duplicate_provider'
:
None
,
'fields'
:
{
'fields'
:
{
'country'
:
{
'country'
:
{
'options'
:
country_options
,
'options'
:
list
(
countries
)
,
},
'gender'
:
{
},
'gender'
:
{
'options'
:
[(
choice
[
0
],
_
(
choice
[
1
]))
for
choice
in
UserProfile
.
GENDER_CHOICES
],
# pylint: disable=translation-of-non-string
'options'
:
[(
choice
[
0
],
_
(
choice
[
1
]))
for
choice
in
UserProfile
.
GENDER_CHOICES
],
# pylint: disable=translation-of-non-string
},
'language'
:
{
},
'language'
:
{
...
...
lms/djangoapps/student_profile/test/test_views.py
View file @
ab912fa8
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
from
django.conf
import
settings
from
django.conf
import
settings
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.test.client
import
RequestFactory
from
util.testing
import
UrlResetMixin
from
util.testing
import
UrlResetMixin
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
...
@@ -25,6 +26,8 @@ class LearnerProfileViewTest(UrlResetMixin, TestCase):
...
@@ -25,6 +26,8 @@ class LearnerProfileViewTest(UrlResetMixin, TestCase):
'own_profile'
,
'own_profile'
,
'country_options'
,
'country_options'
,
'language_options'
,
'language_options'
,
'account_settings_data'
,
'preferences_data'
,
]
]
def
setUp
(
self
):
def
setUp
(
self
):
...
@@ -36,7 +39,9 @@ class LearnerProfileViewTest(UrlResetMixin, TestCase):
...
@@ -36,7 +39,9 @@ class LearnerProfileViewTest(UrlResetMixin, TestCase):
"""
"""
Verify learner profile page context data.
Verify learner profile page context data.
"""
"""
context
=
learner_profile_context
(
self
.
user
.
username
,
self
.
USERNAME
,
self
.
user
.
is_staff
)
request
=
RequestFactory
()
.
get
(
'/url'
)
context
=
learner_profile_context
(
self
.
user
,
self
.
USERNAME
,
self
.
user
.
is_staff
,
request
.
build_absolute_uri
)
self
.
assertEqual
(
self
.
assertEqual
(
context
[
'data'
][
'default_public_account_fields'
],
context
[
'data'
][
'default_public_account_fields'
],
...
...
lms/djangoapps/student_profile/views.py
View file @
ab912fa8
...
@@ -6,12 +6,15 @@ from django_countries import countries
...
@@ -6,12 +6,15 @@ from django_countries import countries
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.contrib.auth.decorators
import
login_required
from
django.contrib.auth.decorators
import
login_required
from
django.http
import
Http
Response
from
django.http
import
Http
404
from
django.views.decorators.http
import
require_http_methods
from
django.views.decorators.http
import
require_http_methods
from
edxmako.shortcuts
import
render_to_response
from
edxmako.shortcuts
import
render_to_response
from
openedx.core.djangoapps.user_api.accounts.api
import
get_account_settings
from
openedx.core.djangoapps.user_api.accounts.serializers
import
PROFILE_IMAGE_KEY_PREFIX
from
openedx.core.djangoapps.user_api.errors
import
UserNotFound
,
UserNotAuthorized
from
openedx.core.djangoapps.user_api.preferences.api
import
get_user_preferences
from
student.models
import
User
from
student.models
import
User
from
microsite_configuration
import
microsite
from
microsite_configuration
import
microsite
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
...
@@ -29,8 +32,9 @@ def learner_profile(request, username):
...
@@ -29,8 +32,9 @@ def learner_profile(request, username):
Returns:
Returns:
HttpResponse: 200 if the page was sent successfully
HttpResponse: 200 if the page was sent successfully
HttpResponse: 302 if not logged in (redirect to login page)
HttpResponse: 302 if not logged in (redirect to login page)
HttpResponse: 404 if the specified username does not exist
HttpResponse: 405 if using an unsupported HTTP method
HttpResponse: 405 if using an unsupported HTTP method
Raises:
Http404: 404 if the specified user is not authorized or does not exist
Example usage:
Example usage:
GET /account/profile
GET /account/profile
...
@@ -38,19 +42,20 @@ def learner_profile(request, username):
...
@@ -38,19 +42,20 @@ def learner_profile(request, username):
try
:
try
:
return
render_to_response
(
return
render_to_response
(
'student_profile/learner_profile.html'
,
'student_profile/learner_profile.html'
,
learner_profile_context
(
request
.
user
.
username
,
username
,
request
.
user
.
is_staff
)
learner_profile_context
(
request
.
user
,
username
,
request
.
user
.
is_staff
,
request
.
build_absolute_uri
)
)
)
except
ObjectDoesNotExist
:
except
(
UserNotAuthorized
,
UserNotFound
,
ObjectDoesNotExist
)
:
r
eturn
HttpResponse
(
status
=
404
)
r
aise
Http404
def
learner_profile_context
(
logged_in_user
name
,
profile_username
,
user_is_staff
):
def
learner_profile_context
(
logged_in_user
,
profile_username
,
user_is_staff
,
build_absolute_uri_func
):
"""Context for the learner profile page.
"""Context for the learner profile page.
Args:
Args:
logged_in_user
name (str): Username of user l
ogged In user.
logged_in_user
(object): L
ogged In user.
profile_username (str): username of user whose profile is requested.
profile_username (str): username of user whose profile is requested.
user_is_staff (bool): Logged In user has staff access.
user_is_staff (bool): Logged In user has staff access.
build_absolute_uri_func ():
Returns:
Returns:
dict
dict
...
@@ -60,12 +65,15 @@ def learner_profile_context(logged_in_username, profile_username, user_is_staff)
...
@@ -60,12 +65,15 @@ def learner_profile_context(logged_in_username, profile_username, user_is_staff)
"""
"""
profile_user
=
User
.
objects
.
get
(
username
=
profile_username
)
profile_user
=
User
.
objects
.
get
(
username
=
profile_username
)
country_options
=
[
own_profile
=
(
logged_in_user
.
username
==
profile_username
)
(
country_code
,
_
(
country_name
))
# pylint: disable=translation-of-non-string
for
country_code
,
country_name
in
sorted
(
account_settings_data
=
get_account_settings
(
logged_in_user
,
profile_username
)
countries
.
countries
,
key
=
lambda
(
__
,
name
):
unicode
(
name
)
# Account for possibly relative URLs.
)
for
key
,
value
in
account_settings_data
[
'profile_image'
]
.
items
():
]
if
key
.
startswith
(
PROFILE_IMAGE_KEY_PREFIX
):
account_settings_data
[
'profile_image'
][
key
]
=
build_absolute_uri_func
(
value
)
preferences_data
=
get_user_preferences
(
profile_user
,
profile_username
)
context
=
{
context
=
{
'data'
:
{
'data'
:
{
...
@@ -74,17 +82,18 @@ def learner_profile_context(logged_in_username, profile_username, user_is_staff)
...
@@ -74,17 +82,18 @@ def learner_profile_context(logged_in_username, profile_username, user_is_staff)
'default_visibility'
:
settings
.
ACCOUNT_VISIBILITY_CONFIGURATION
[
'default_visibility'
],
'default_visibility'
:
settings
.
ACCOUNT_VISIBILITY_CONFIGURATION
[
'default_visibility'
],
'accounts_api_url'
:
reverse
(
"accounts_api"
,
kwargs
=
{
'username'
:
profile_username
}),
'accounts_api_url'
:
reverse
(
"accounts_api"
,
kwargs
=
{
'username'
:
profile_username
}),
'preferences_api_url'
:
reverse
(
'preferences_api'
,
kwargs
=
{
'username'
:
profile_username
}),
'preferences_api_url'
:
reverse
(
'preferences_api'
,
kwargs
=
{
'username'
:
profile_username
}),
'preferences_data'
:
preferences_data
,
'account_settings_data'
:
account_settings_data
,
'profile_image_upload_url'
:
reverse
(
'profile_image_upload'
,
kwargs
=
{
'username'
:
profile_username
}),
'profile_image_upload_url'
:
reverse
(
'profile_image_upload'
,
kwargs
=
{
'username'
:
profile_username
}),
'profile_image_remove_url'
:
reverse
(
'profile_image_remove'
,
kwargs
=
{
'username'
:
profile_username
}),
'profile_image_remove_url'
:
reverse
(
'profile_image_remove'
,
kwargs
=
{
'username'
:
profile_username
}),
'profile_image_max_bytes'
:
settings
.
PROFILE_IMAGE_MAX_BYTES
,
'profile_image_max_bytes'
:
settings
.
PROFILE_IMAGE_MAX_BYTES
,
'profile_image_min_bytes'
:
settings
.
PROFILE_IMAGE_MIN_BYTES
,
'profile_image_min_bytes'
:
settings
.
PROFILE_IMAGE_MIN_BYTES
,
'account_settings_page_url'
:
reverse
(
'account_settings'
),
'account_settings_page_url'
:
reverse
(
'account_settings'
),
'has_preferences_access'
:
(
logged_in_username
==
profile_username
or
user_is_staff
),
'has_preferences_access'
:
(
logged_in_user
.
user
name
==
profile_username
or
user_is_staff
),
'own_profile'
:
(
logged_in_username
==
profile_username
)
,
'own_profile'
:
own_profile
,
'country_options'
:
country_options
,
'country_options'
:
list
(
countries
)
,
'language_options'
:
settings
.
ALL_LANGUAGES
,
'language_options'
:
settings
.
ALL_LANGUAGES
,
'platform_name'
:
microsite
.
get_value
(
'platform_name'
,
settings
.
PLATFORM_NAME
),
'platform_name'
:
microsite
.
get_value
(
'platform_name'
,
settings
.
PLATFORM_NAME
),
}
}
}
}
return
context
return
context
lms/static/js/spec/student_profile/learner_profile_factory_spec.js
View file @
ab912fa8
...
@@ -27,7 +27,7 @@ define(['backbone', 'jquery', 'underscore', 'js/common_helpers/ajax_helpers', 'j
...
@@ -27,7 +27,7 @@ define(['backbone', 'jquery', 'underscore', 'js/common_helpers/ajax_helpers', 'j
TemplateHelpers
.
installTemplate
(
'templates/student_profile/learner_profile'
);
TemplateHelpers
.
installTemplate
(
'templates/student_profile/learner_profile'
);
});
});
var
createProfilePage
=
function
(
ownProfile
)
{
var
createProfilePage
=
function
(
ownProfile
,
options
)
{
return
new
LearnerProfilePage
({
return
new
LearnerProfilePage
({
'accounts_api_url'
:
Helpers
.
USER_ACCOUNTS_API_URL
,
'accounts_api_url'
:
Helpers
.
USER_ACCOUNTS_API_URL
,
'preferences_api_url'
:
Helpers
.
USER_PREFERENCES_API_URL
,
'preferences_api_url'
:
Helpers
.
USER_PREFERENCES_API_URL
,
...
@@ -41,55 +41,13 @@ define(['backbone', 'jquery', 'underscore', 'js/common_helpers/ajax_helpers', 'j
...
@@ -41,55 +41,13 @@ define(['backbone', 'jquery', 'underscore', 'js/common_helpers/ajax_helpers', 'j
'profile_image_upload_url'
:
Helpers
.
IMAGE_UPLOAD_API_URL
,
'profile_image_upload_url'
:
Helpers
.
IMAGE_UPLOAD_API_URL
,
'profile_image_remove_url'
:
Helpers
.
IMAGE_REMOVE_API_URL
,
'profile_image_remove_url'
:
Helpers
.
IMAGE_REMOVE_API_URL
,
'default_visibility'
:
'all_users'
,
'default_visibility'
:
'all_users'
,
'platform_name'
:
'edX'
'platform_name'
:
'edX'
,
'account_settings_data'
:
Helpers
.
createAccountSettingsData
(
options
),
'preferences_data'
:
Helpers
.
createUserPreferencesData
()
});
});
};
};
it
(
"show loading error when UserAccountModel fails to load"
,
function
()
{
it
(
"renders the full profile after data is successfully fetched"
,
function
()
{
requests
=
AjaxHelpers
.
requests
(
this
);
var
context
=
createProfilePage
(
true
),
learnerProfileView
=
context
.
learnerProfileView
;
var
userAccountRequest
=
requests
[
0
];
expect
(
userAccountRequest
.
method
).
toBe
(
'GET'
);
expect
(
userAccountRequest
.
url
).
toBe
(
Helpers
.
USER_ACCOUNTS_API_URL
);
AjaxHelpers
.
respondWithError
(
requests
,
500
);
Helpers
.
expectLoadingErrorIsVisible
(
learnerProfileView
,
true
);
Helpers
.
expectLoadingIndicatorIsVisible
(
learnerProfileView
,
false
);
LearnerProfileHelpers
.
expectProfileSectionsNotToBeRendered
(
learnerProfileView
);
});
it
(
"shows loading error when UserPreferencesModel fails to load"
,
function
()
{
requests
=
AjaxHelpers
.
requests
(
this
);
var
context
=
createProfilePage
(
true
),
learnerProfileView
=
context
.
learnerProfileView
;
var
userAccountRequest
=
requests
[
0
];
expect
(
userAccountRequest
.
method
).
toBe
(
'GET'
);
expect
(
userAccountRequest
.
url
).
toBe
(
Helpers
.
USER_ACCOUNTS_API_URL
);
AjaxHelpers
.
respondWithJson
(
requests
,
Helpers
.
createAccountSettingsData
());
Helpers
.
expectLoadingIndicatorIsVisible
(
learnerProfileView
,
true
);
Helpers
.
expectLoadingErrorIsVisible
(
learnerProfileView
,
false
);
LearnerProfileHelpers
.
expectProfileSectionsNotToBeRendered
(
learnerProfileView
);
var
userPreferencesRequest
=
requests
[
1
];
expect
(
userPreferencesRequest
.
method
).
toBe
(
'GET'
);
expect
(
userPreferencesRequest
.
url
).
toBe
(
Helpers
.
USER_PREFERENCES_API_URL
);
AjaxHelpers
.
respondWithError
(
requests
,
500
);
Helpers
.
expectLoadingIndicatorIsVisible
(
learnerProfileView
,
false
);
Helpers
.
expectLoadingErrorIsVisible
(
learnerProfileView
,
true
);
LearnerProfileHelpers
.
expectProfileSectionsNotToBeRendered
(
learnerProfileView
);
});
it
(
"renders the full profile after models are successfully fetched"
,
function
()
{
requests
=
AjaxHelpers
.
requests
(
this
);
requests
=
AjaxHelpers
.
requests
(
this
);
...
@@ -106,33 +64,19 @@ define(['backbone', 'jquery', 'underscore', 'js/common_helpers/ajax_helpers', 'j
...
@@ -106,33 +64,19 @@ define(['backbone', 'jquery', 'underscore', 'js/common_helpers/ajax_helpers', 'j
it
(
"renders the limited profile for undefined 'year_of_birth'"
,
function
()
{
it
(
"renders the limited profile for undefined 'year_of_birth'"
,
function
()
{
requests
=
AjaxHelpers
.
requests
(
this
);
var
context
=
createProfilePage
(
true
,
{
year_of_birth
:
''
,
requires_parental_consent
:
true
}),
var
context
=
createProfilePage
(
true
),
learnerProfileView
=
context
.
learnerProfileView
;
learnerProfileView
=
context
.
learnerProfileView
;
AjaxHelpers
.
respondWithJson
(
requests
,
Helpers
.
createAccountSettingsData
({
year_of_birth
:
''
,
requires_parental_consent
:
true
}));
AjaxHelpers
.
respondWithJson
(
requests
,
Helpers
.
createUserPreferencesData
());
LearnerProfileHelpers
.
expectLimitedProfileSectionsAndFieldsToBeRendered
(
learnerProfileView
);
LearnerProfileHelpers
.
expectLimitedProfileSectionsAndFieldsToBeRendered
(
learnerProfileView
);
});
});
it
(
"renders the limited profile for under 13 users"
,
function
()
{
it
(
"renders the limited profile for under 13 users"
,
function
()
{
requests
=
AjaxHelpers
.
requests
(
this
);
var
context
=
createProfilePage
(
true
,
var
context
=
createProfilePage
(
true
),
{
year_of_birth
:
new
Date
().
getFullYear
()
-
10
,
requires_parental_consent
:
true
}
learnerProfileView
=
context
.
learnerProfileView
;
);
var
learnerProfileView
=
context
.
learnerProfileView
;
AjaxHelpers
.
respondWithJson
(
requests
,
Helpers
.
createAccountSettingsData
({
year_of_birth
:
new
Date
().
getFullYear
()
-
10
,
requires_parental_consent
:
true
}));
AjaxHelpers
.
respondWithJson
(
requests
,
Helpers
.
createUserPreferencesData
());
LearnerProfileHelpers
.
expectLimitedProfileSectionsAndFieldsToBeRendered
(
learnerProfileView
);
LearnerProfileHelpers
.
expectLimitedProfileSectionsAndFieldsToBeRendered
(
learnerProfileView
);
});
});
});
});
...
...
lms/static/js/student_account/models/user_account_model.js
View file @
ab912fa8
...
@@ -34,8 +34,8 @@
...
@@ -34,8 +34,8 @@
// Currently when a non-staff user A access user B's profile, the only way to tell whether user B's
// Currently when a non-staff user A access user B's profile, the only way to tell whether user B's
// profile is public is to check if the api has returned fields other than the default public fields
// profile is public is to check if the api has returned fields other than the default public fields
// specified in settings.ACCOUNT_VISIBILITY_CONFIGURATION.
// specified in settings.ACCOUNT_VISIBILITY_CONFIGURATION.
var
profileIsPublic
=
_
.
size
(
_
.
difference
(
_
.
keys
(
response
),
this
.
get
(
'default_public_account_fields'
)))
>
0
;
var
responseKeys
=
_
.
filter
(
_
.
keys
(
response
),
function
(
key
)
{
return
key
!==
'default_public_account_fields'
})
;
this
.
set
({
'profile_is_public'
:
profileIsPublic
},
{
silent
:
true
})
;
response
.
profile_is_public
=
_
.
size
(
_
.
difference
(
responseKeys
,
response
.
default_public_account_fields
))
>
0
;
return
response
;
return
response
;
},
},
...
...
lms/static/js/student_profile/views/learner_profile_factory.js
View file @
ab912fa8
...
@@ -15,19 +15,23 @@
...
@@ -15,19 +15,23 @@
return
function
(
options
)
{
return
function
(
options
)
{
var
learnerProfileElement
=
$
(
'.wrapper-profile'
);
var
learnerProfileElement
=
$
(
'.wrapper-profile'
);
var
defaultVisibility
=
options
.
default_visibility
;
var
accountSettingsModel
=
new
AccountSettingsModel
(
_
.
extend
(
options
.
account_settings_data
,
{
'default_public_account_fields'
:
options
.
default_public_account_fields
}
),
{
parse
:
true
}
);
var
AccountPreferencesModelWithDefaults
=
AccountPreferencesModel
.
extend
({
var
AccountPreferencesModelWithDefaults
=
AccountPreferencesModel
.
extend
({
defaults
:
{
defaults
:
{
account_privacy
:
defaultV
isibility
account_privacy
:
options
.
default_v
isibility
}
}
});
});
var
accountPreferencesModel
=
new
AccountPreferencesModelWithDefaults
();
var
accountPreferencesModel
=
new
AccountPreferencesModelWithDefaults
(
options
.
preferences_data
);
accountPreferencesModel
.
url
=
options
.
preferences_api_url
;
var
accountSettingsModel
=
new
AccountSettingsModel
({
'default_public_account_fields'
:
options
.
default_public_account_fields
});
accountSettingsModel
.
url
=
options
.
accounts_api_url
;
accountSettingsModel
.
url
=
options
.
accounts_api_url
;
accountPreferencesModel
.
url
=
options
.
preferences_api_url
;
var
editable
=
options
.
own_profile
?
'toggle'
:
'never'
;
var
editable
=
options
.
own_profile
?
'toggle'
:
'never'
;
...
@@ -122,10 +126,6 @@
...
@@ -122,10 +126,6 @@
sectionTwoFieldViews
:
sectionTwoFieldViews
sectionTwoFieldViews
:
sectionTwoFieldViews
});
});
var
showLoadingError
=
function
()
{
learnerProfileView
.
showLoadingError
();
};
var
getProfileVisibility
=
function
()
{
var
getProfileVisibility
=
function
()
{
if
(
options
.
has_preferences_access
)
{
if
(
options
.
has_preferences_access
)
{
return
accountPreferencesModel
.
get
(
'account_privacy'
);
return
accountPreferencesModel
.
get
(
'account_privacy'
);
...
@@ -146,26 +146,12 @@
...
@@ -146,26 +146,12 @@
learnerProfileView
.
render
();
learnerProfileView
.
render
();
};
};
accountSettingsModel
.
fetch
({
success
:
function
()
{
// Fetch the preferences model if the user has access
if
(
options
.
has_preferences_access
)
{
if
(
options
.
has_preferences_access
)
{
accountPreferencesModel
.
fetch
({
success
:
function
()
{
if
(
accountSettingsModel
.
get
(
'requires_parental_consent'
))
{
if
(
accountSettingsModel
.
get
(
'requires_parental_consent'
))
{
accountPreferencesModel
.
set
(
'account_privacy'
,
'private'
);
accountPreferencesModel
.
set
(
'account_privacy'
,
'private'
);
}
}
showLearnerProfileView
();
},
error
:
showLoadingError
});
}
}
else
{
showLearnerProfileView
();
showLearnerProfileView
();
}
},
error
:
showLoadingError
});
return
{
return
{
accountSettingsModel
:
accountSettingsModel
,
accountSettingsModel
:
accountSettingsModel
,
...
...
lms/static/js/views/fields.js
View file @
ab912fa8
...
@@ -114,8 +114,12 @@
...
@@ -114,8 +114,12 @@
setTimeout
(
function
()
{
setTimeout
(
function
()
{
if
((
context
===
view
.
lastSuccessMessageContext
)
&&
(
view
.
getNotificationMessage
()
===
successMessage
))
{
if
((
context
===
view
.
lastSuccessMessageContext
)
&&
(
view
.
getNotificationMessage
()
===
successMessage
))
{
if
(
view
.
editable
===
'toggle'
)
{
view
.
showCanEditMessage
(
true
);
}
else
{
view
.
showHelpMessage
();
view
.
showHelpMessage
();
}
}
}
},
messageRevertDelay
);
},
messageRevertDelay
);
},
},
...
...
lms/static/sass/views/_learner-profile.scss
View file @
ab912fa8
...
@@ -218,7 +218,6 @@
...
@@ -218,7 +218,6 @@
.wrapper-profile-section-two
{
.wrapper-profile-section-two
{
width
:
flex-grid
(
8
,
12
);
width
:
flex-grid
(
8
,
12
);
margin-top
:
(
$baseline
*
1
.5
);
}
}
.profile-section-two-fields
{
.profile-section-two-fields
{
...
...
lms/templates/register.html
View file @
ab912fa8
...
@@ -256,7 +256,7 @@
...
@@ -256,7 +256,7 @@
<label
for=
"country"
>
${_("Country")}
</label>
<label
for=
"country"
>
${_("Country")}
</label>
<select
id=
"country"
name=
"country"
${'
required
aria-required=
"true"
'
if
settings
.
REGISTRATION_EXTRA_FIELDS
['
country
']
==
'
required
'
else
''}
>
<select
id=
"country"
name=
"country"
${'
required
aria-required=
"true"
'
if
settings
.
REGISTRATION_EXTRA_FIELDS
['
country
']
==
'
required
'
else
''}
>
<option
value=
""
>
--
</option>
<option
value=
""
>
--
</option>
%for code, country_name in
sorted(countries.countries, key=lambda (__, name): unicode(name))
:
%for code, country_name in
countries
:
<option
value=
"${code}"
>
${ unicode(country_name) }
</option>
<option
value=
"${code}"
>
${ unicode(country_name) }
</option>
%endfor
%endfor
</select>
</select>
...
...
lms/templates/student_profile/learner_profile.html
View file @
ab912fa8
<
%!
import
json
%
>
<
%!
import
json
%
>
<
%!
from
django
.
core
.
urlresolvers
import
reverse
%
>
<
%!
from
django
.
core
.
urlresolvers
import
reverse
%
>
<
%!
from
django
.
utils
.
translation
import
ugettext
as
_
%
>
<
%!
from
django
.
utils
.
translation
import
ugettext
as
_
%
>
<
%!
from
xmodule
.
modulestore
import
EdxJSONEncoder
%
>
<
%
inherit
file=
"/main.html"
/>
<
%
inherit
file=
"/main.html"
/>
<
%
namespace
name=
'static'
file=
'/static_content.html'
/>
<
%
namespace
name=
'static'
file=
'/static_content.html'
/>
...
@@ -38,7 +39,7 @@
...
@@ -38,7 +39,7 @@
<script>
<script>
(
function
(
require
)
{
(
function
(
require
)
{
require
([
'js/student_profile/views/learner_profile_factory'
],
function
(
setupLearnerProfile
)
{
require
([
'js/student_profile/views/learner_profile_factory'
],
function
(
setupLearnerProfile
)
{
var
options
=
$
{
json
.
dumps
(
data
)
};
var
options
=
$
{
json
.
dumps
(
data
,
cls
=
EdxJSONEncoder
)
};
setupLearnerProfile
(
options
);
setupLearnerProfile
(
options
);
});
});
}).
call
(
this
,
require
||
RequireJS
.
require
);
}).
call
(
this
,
require
||
RequireJS
.
require
);
...
...
openedx/core/djangoapps/user_api/tests/test_constants.py
View file @
ab912fa8
# -*- coding: utf-8 -*-
"""Constants used in the test suite. """
"""Constants used in the test suite. """
SORTED_COUNTRIES
=
[
SORTED_COUNTRIES
=
[
(
u
'AF'
,
u'Afghanistan'
),
(
u
"AF"
,
u"Afghanistan"
),
(
u
'AL'
,
u'Albania'
),
(
u
"AX"
,
u"Åland Islands"
),
(
u
'DZ'
,
u'Algeria'
),
(
u
"AL"
,
u"Albania"
),
(
u
'AS'
,
u'American Samoa'
),
(
u
"DZ"
,
u"Algeria"
),
(
u
'AD'
,
u'Andorra'
),
(
u
"AS"
,
u"American Samoa"
),
(
u
'AO'
,
u'Angola'
),
(
u
"AD"
,
u"Andorra"
),
(
u
'AI'
,
u'Anguilla'
),
(
u
"AO"
,
u"Angola"
),
(
u
'AQ'
,
u'Antarctica'
),
(
u
"AI"
,
u"Anguilla"
),
(
u
'AG'
,
u'Antigua and Barbuda'
),
(
u
"AQ"
,
u"Antarctica"
),
(
u
'AR'
,
u'Argentina'
),
(
u
"AG"
,
u"Antigua and Barbuda"
),
(
u
'AM'
,
u'Armenia'
),
(
u
"AR"
,
u"Argentina"
),
(
u
'AW'
,
u'Aruba'
),
(
u
"AM"
,
u"Armenia"
),
(
u
'AU'
,
u'Australia'
),
(
u
"AW"
,
u"Aruba"
),
(
u
'AT'
,
u'Austria'
),
(
u
"AU"
,
u"Australia"
),
(
u
'AZ'
,
u'Azerbaijan'
),
(
u
"AT"
,
u"Austria"
),
(
u
'BS'
,
u'Bahamas'
),
(
u
"AZ"
,
u"Azerbaijan"
),
(
u
'BH'
,
u'Bahrain'
),
(
u
"BS"
,
u"Bahamas"
),
(
u
'BD'
,
u'Bangladesh'
),
(
u
"BH"
,
u"Bahrain"
),
(
u
'BB'
,
u'Barbados'
),
(
u
"BD"
,
u"Bangladesh"
),
(
u
'BY'
,
u'Belarus'
),
(
u
"BB"
,
u"Barbados"
),
(
u
'BE'
,
u'Belgium'
),
(
u
"BY"
,
u"Belarus"
),
(
u
'BZ'
,
u'Belize'
),
(
u
"BE"
,
u"Belgium"
),
(
u
'BJ'
,
u'Benin'
),
(
u
"BZ"
,
u"Belize"
),
(
u
'BM'
,
u'Bermuda'
),
(
u
"BJ"
,
u"Benin"
),
(
u
'BT'
,
u'Bhutan'
),
(
u
"BM"
,
u"Bermuda"
),
(
u
'BO'
,
u'Bolivia, Plurinational State of'
),
(
u
"BT"
,
u"Bhutan"
),
(
u
'BQ'
,
u'Bonaire, Sint Eustatius and Saba'
),
(
u
"BO"
,
u"Bolivia"
),
(
u
'BA'
,
u'Bosnia and Herzegovina'
),
(
u
"BQ"
,
u"Bonaire, Sint Eustatius and Saba"
),
(
u
'BW'
,
u'Botswana'
),
(
u
"BA"
,
u"Bosnia and Herzegovina"
),
(
u
'BV'
,
u'Bouvet Island'
),
(
u
"BW"
,
u"Botswana"
),
(
u
'BR'
,
u'Brazil'
),
(
u
"BV"
,
u"Bouvet Island"
),
(
u
'IO'
,
u'British Indian Ocean Territory'
),
(
u
"BR"
,
u"Brazil"
),
(
u
'BN'
,
u'Brunei Darussalam'
),
(
u
"IO"
,
u"British Indian Ocean Territory"
),
(
u
'BG'
,
u'Bulgaria'
),
(
u
"BN"
,
u"Brunei"
),
(
u
'BF'
,
u'Burkina Faso'
),
(
u
"BG"
,
u"Bulgaria"
),
(
u
'BI'
,
u'Burundi'
),
(
u
"BF"
,
u"Burkina Faso"
),
(
u
'KH'
,
u'Cambodia'
),
(
u
"BI"
,
u"Burundi"
),
(
u
'CM'
,
u'Cameroon'
),
(
u
"CV"
,
u"Cabo Verde"
),
(
u
'CA'
,
u'Canada'
),
(
u
"KH"
,
u"Cambodia"
),
(
u
'CV'
,
u'Cape Verde'
),
(
u
"CM"
,
u"Cameroon"
),
(
u
'KY'
,
u'Cayman Islands'
),
(
u
"CA"
,
u"Canada"
),
(
u
'CF'
,
u'Central African Republic'
),
(
u
"KY"
,
u"Cayman Islands"
),
(
u
'TD'
,
u'Chad'
),
(
u
"CF"
,
u"Central African Republic"
),
(
u
'CL'
,
u'Chile'
),
(
u
"TD"
,
u"Chad"
),
(
u
'CN'
,
u'China'
),
(
u
"CL"
,
u"Chile"
),
(
u
'CX'
,
u'Christmas Island'
),
(
u
"CN"
,
u"China"
),
(
u
'CC'
,
u'Cocos (Keeling) Islands'
),
(
u
"CX"
,
u"Christmas Island"
),
(
u
'CO'
,
u'Colombia'
),
(
u
"CC"
,
u"Cocos (Keeling) Islands"
),
(
u
'KM'
,
u'Comoros'
),
(
u
"CO"
,
u"Colombia"
),
(
u
'CG'
,
u'Congo'
),
(
u
"KM"
,
u"Comoros"
),
(
u
'CD'
,
u'Congo (the Democratic Republic of the)'
),
(
u
"CG"
,
u"Congo"
),
(
u
'CK'
,
u'Cook Islands'
),
(
u
"CD"
,
u"Congo (the Democratic Republic of the)"
),
(
u
'CR'
,
u'Costa Rica'
),
(
u
"CK"
,
u"Cook Islands"
),
(
u
'HR'
,
u'Croatia'
),
(
u
"CR"
,
u"Costa Rica"
),
(
u
'CU'
,
u'Cuba'
),
(
u
"CI"
,
u"Côte d'Ivoire"
),
(
u
'CW'
,
u'Cura
\xe7
ao'
),
(
u
"HR"
,
u"Croatia"
),
(
u
'CY'
,
u'Cyprus'
),
(
u
"CU"
,
u"Cuba"
),
(
u
'CZ'
,
u'Czech Republic'
),
(
u
"CW"
,
u"Curaçao"
),
(
u
'CI'
,
u"C
\xf4
te d'Ivoire
"
),
(
u
"CY"
,
u"Cyprus
"
),
(
u
'DK'
,
u'Denmark'
),
(
u
"CZ"
,
u"Czech Republic"
),
(
u
'DJ'
,
u'Djibouti'
),
(
u
"DK"
,
u"Denmark"
),
(
u
'DM'
,
u'Dominica'
),
(
u
"DJ"
,
u"Djibouti"
),
(
u
'DO'
,
u'Dominican Republic'
),
(
u
"DM"
,
u"Dominica"
),
(
u
'EC'
,
u'Ecuador'
),
(
u
"DO"
,
u"Dominican Republic"
),
(
u
'EG'
,
u'Egypt'
),
(
u
"EC"
,
u"Ecuador"
),
(
u
'SV'
,
u'El Salvador'
),
(
u
"EG"
,
u"Egypt"
),
(
u
'GQ'
,
u'Equatorial Guinea'
),
(
u
"SV"
,
u"El Salvador"
),
(
u
'ER'
,
u'Eritrea'
),
(
u
"GQ"
,
u"Equatorial Guinea"
),
(
u
'EE'
,
u'Estonia'
),
(
u
"ER"
,
u"Eritrea"
),
(
u
'ET'
,
u'Ethiopia'
),
(
u
"EE"
,
u"Estonia"
),
(
u
'FK'
,
u'Falkland Islands [Malvinas]'
),
(
u
"ET"
,
u"Ethiopia"
),
(
u
'FO'
,
u'Faroe Islands'
),
(
u
"FK"
,
u"Falkland Islands [Malvinas]"
),
(
u
'FJ'
,
u'Fiji'
),
(
u
"FO"
,
u"Faroe Islands"
),
(
u
'FI'
,
u'Finland'
),
(
u
"FJ"
,
u"Fiji"
),
(
u
'FR'
,
u'France'
),
(
u
"FI"
,
u"Finland"
),
(
u
'GF'
,
u'French Guiana'
),
(
u
"FR"
,
u"France"
),
(
u
'PF'
,
u'French Polynesia'
),
(
u
"GF"
,
u"French Guiana"
),
(
u
'TF'
,
u'French Southern Territories'
),
(
u
"PF"
,
u"French Polynesia"
),
(
u
'GA'
,
u'Gabon'
),
(
u
"TF"
,
u"French Southern Territories"
),
(
u
'GM'
,
u'Gambia (The)'
),
(
u
"GA"
,
u"Gabon"
),
(
u
'GE'
,
u'Georgia'
),
(
u
"GM"
,
u"Gambia"
),
(
u
'DE'
,
u'Germany'
),
(
u
"GE"
,
u"Georgia"
),
(
u
'GH'
,
u'Ghana'
),
(
u
"DE"
,
u"Germany"
),
(
u
'GI'
,
u'Gibraltar'
),
(
u
"GH"
,
u"Ghana"
),
(
u
'GR'
,
u'Greece'
),
(
u
"GI"
,
u"Gibraltar"
),
(
u
'GL'
,
u'Greenland'
),
(
u
"GR"
,
u"Greece"
),
(
u
'GD'
,
u'Grenada'
),
(
u
"GL"
,
u"Greenland"
),
(
u
'GP'
,
u'Guadeloupe'
),
(
u
"GD"
,
u"Grenada"
),
(
u
'GU'
,
u'Guam'
),
(
u
"GP"
,
u"Guadeloupe"
),
(
u
'GT'
,
u'Guatemala'
),
(
u
"GU"
,
u"Guam"
),
(
u
'GG'
,
u'Guernsey'
),
(
u
"GT"
,
u"Guatemala"
),
(
u
'GN'
,
u'Guinea'
),
(
u
"GG"
,
u"Guernsey"
),
(
u
'GW'
,
u'Guinea-Bissau'
),
(
u
"GN"
,
u"Guinea"
),
(
u
'GY'
,
u'Guyana'
),
(
u
"GW"
,
u"Guinea-Bissau"
),
(
u
'HT'
,
u'Haiti'
),
(
u
"GY"
,
u"Guyana"
),
(
u
'HM'
,
u'Heard Island and McDonald Islands'
),
(
u
"HT"
,
u"Haiti"
),
(
u
'VA'
,
u'Holy See [Vatican City State]'
),
(
u
"HM"
,
u"Heard Island and McDonald Islands"
),
(
u
'HN'
,
u'Honduras'
),
(
u
"VA"
,
u"Holy See"
),
(
u
'HK'
,
u'Hong Kong'
),
(
u
"HN"
,
u"Honduras"
),
(
u
'HU'
,
u'Hungary'
),
(
u
"HK"
,
u"Hong Kong"
),
(
u
'IS'
,
u'Iceland'
),
(
u
"HU"
,
u"Hungary"
),
(
u
'IN'
,
u'India'
),
(
u
"IS"
,
u"Iceland"
),
(
u
'ID'
,
u'Indonesia'
),
(
u
"IN"
,
u"India"
),
(
u
'IR'
,
u'Iran (the Islamic Republic of)'
),
(
u
"ID"
,
u"Indonesia"
),
(
u
'IQ'
,
u'Iraq'
),
(
u
"IR"
,
u"Iran"
),
(
u
'IE'
,
u'Ireland'
),
(
u
"IQ"
,
u"Iraq"
),
(
u
'IM'
,
u'Isle of Man'
),
(
u
"IE"
,
u"Ireland"
),
(
u
'IL'
,
u'Israel'
),
(
u
"IM"
,
u"Isle of Man"
),
(
u
'IT'
,
u'Italy'
),
(
u
"IL"
,
u"Israel"
),
(
u
'JM'
,
u'Jamaica'
),
(
u
"IT"
,
u"Italy"
),
(
u
'JP'
,
u'Japan'
),
(
u
"JM"
,
u"Jamaica"
),
(
u
'JE'
,
u'Jersey'
),
(
u
"JP"
,
u"Japan"
),
(
u
'JO'
,
u'Jordan'
),
(
u
"JE"
,
u"Jersey"
),
(
u
'KZ'
,
u'Kazakhstan'
),
(
u
"JO"
,
u"Jordan"
),
(
u
'KE'
,
u'Kenya'
),
(
u
"KZ"
,
u"Kazakhstan"
),
(
u
'KI'
,
u'Kiribati'
),
(
u
"KE"
,
u"Kenya"
),
(
u
'KP'
,
u"Korea (the Democratic People's Republic of)
"
),
(
u
"KI"
,
u"Kiribati
"
),
(
u
'KR'
,
u'Korea (the Republic of)'
),
(
u
"KW"
,
u"Kuwait"
),
(
u
'KW'
,
u'Kuwait'
),
(
u
"KG"
,
u"Kyrgyzstan"
),
(
u
'KG'
,
u'Kyrgyzstan'
),
(
u
"LA"
,
u"Laos"
),
(
u
'LA'
,
u"Lao People's Democratic Republic
"
),
(
u
"LV"
,
u"Latvia
"
),
(
u
'LV'
,
u'Latvia'
),
(
u
"LB"
,
u"Lebanon"
),
(
u
'LB'
,
u'Lebanon'
),
(
u
"LS"
,
u"Lesotho"
),
(
u
'LS'
,
u'Lesotho'
),
(
u
"LR"
,
u"Liberia"
),
(
u
'LR'
,
u'Liberia'
),
(
u
"LY"
,
u"Libya"
),
(
u
'LY'
,
u'Libya'
),
(
u
"LI"
,
u"Liechtenstein"
),
(
u
'LI'
,
u'Liechtenstein'
),
(
u
"LT"
,
u"Lithuania"
),
(
u
'LT'
,
u'Lithuania'
),
(
u
"LU"
,
u"Luxembourg"
),
(
u
'LU'
,
u'Luxembourg'
),
(
u
"MO"
,
u"Macao"
),
(
u
'MO'
,
u'Macao'
),
(
u
"MK"
,
u"Macedonia"
),
(
u
'MK'
,
u'Macedonia (the former Yugoslav Republic of)'
),
(
u
"MG"
,
u"Madagascar"
),
(
u
'MG'
,
u'Madagascar'
),
(
u
"MW"
,
u"Malawi"
),
(
u
'MW'
,
u'Malawi'
),
(
u
"MY"
,
u"Malaysia"
),
(
u
'MY'
,
u'Malaysia'
),
(
u
"MV"
,
u"Maldives"
),
(
u
'MV'
,
u'Maldives'
),
(
u
"ML"
,
u"Mali"
),
(
u
'ML'
,
u'Mali'
),
(
u
"MT"
,
u"Malta"
),
(
u
'MT'
,
u'Malta'
),
(
u
"MH"
,
u"Marshall Islands"
),
(
u
'MH'
,
u'Marshall Islands'
),
(
u
"MQ"
,
u"Martinique"
),
(
u
'MQ'
,
u'Martinique'
),
(
u
"MR"
,
u"Mauritania"
),
(
u
'MR'
,
u'Mauritania'
),
(
u
"MU"
,
u"Mauritius"
),
(
u
'MU'
,
u'Mauritius'
),
(
u
"YT"
,
u"Mayotte"
),
(
u
'YT'
,
u'Mayotte'
),
(
u
"MX"
,
u"Mexico"
),
(
u
'MX'
,
u'Mexico'
),
(
u
"FM"
,
u"Micronesia (Federated States of)"
),
(
u
'FM'
,
u'Micronesia (the Federated States of)'
),
(
u
"MD"
,
u"Moldovia"
),
(
u
'MD'
,
u'Moldova (the Republic of)'
),
(
u
"MC"
,
u"Monaco"
),
(
u
'MC'
,
u'Monaco'
),
(
u
"MN"
,
u"Mongolia"
),
(
u
'MN'
,
u'Mongolia'
),
(
u
"ME"
,
u"Montenegro"
),
(
u
'ME'
,
u'Montenegro'
),
(
u
"MS"
,
u"Montserrat"
),
(
u
'MS'
,
u'Montserrat'
),
(
u
"MA"
,
u"Morocco"
),
(
u
'MA'
,
u'Morocco'
),
(
u
"MZ"
,
u"Mozambique"
),
(
u
'MZ'
,
u'Mozambique'
),
(
u
"MM"
,
u"Myanmar"
),
(
u
'MM'
,
u'Myanmar'
),
(
u
"NA"
,
u"Namibia"
),
(
u
'NA'
,
u'Namibia'
),
(
u
"NR"
,
u"Nauru"
),
(
u
'NR'
,
u'Nauru'
),
(
u
"NP"
,
u"Nepal"
),
(
u
'NP'
,
u'Nepal'
),
(
u
"NL"
,
u"Netherlands"
),
(
u
'NL'
,
u'Netherlands'
),
(
u
"NC"
,
u"New Caledonia"
),
(
u
'NC'
,
u'New Caledonia'
),
(
u
"NZ"
,
u"New Zealand"
),
(
u
'NZ'
,
u'New Zealand'
),
(
u
"NI"
,
u"Nicaragua"
),
(
u
'NI'
,
u'Nicaragua'
),
(
u
"NE"
,
u"Niger"
),
(
u
'NE'
,
u'Niger'
),
(
u
"NG"
,
u"Nigeria"
),
(
u
'NG'
,
u'Nigeria'
),
(
u
"NU"
,
u"Niue"
),
(
u
'NU'
,
u'Niue'
),
(
u
"NF"
,
u"Norfolk Island"
),
(
u
'NF'
,
u'Norfolk Island'
),
(
u
"KP"
,
u"North Korea"
),
(
u
'MP'
,
u'Northern Mariana Islands'
),
(
u
"MP"
,
u"Northern Mariana Islands"
),
(
u
'NO'
,
u'Norway'
),
(
u
"NO"
,
u"Norway"
),
(
u
'OM'
,
u'Oman'
),
(
u
"OM"
,
u"Oman"
),
(
u
'PK'
,
u'Pakistan'
),
(
u
"PK"
,
u"Pakistan"
),
(
u
'PW'
,
u'Palau'
),
(
u
"PW"
,
u"Palau"
),
(
u
'PS'
,
u'Palestine, State of'
),
(
u
"PS"
,
u"Palestine, State of"
),
(
u
'PA'
,
u'Panama'
),
(
u
"PA"
,
u"Panama"
),
(
u
'PG'
,
u'Papua New Guinea'
),
(
u
"PG"
,
u"Papua New Guinea"
),
(
u
'PY'
,
u'Paraguay'
),
(
u
"PY"
,
u"Paraguay"
),
(
u
'PE'
,
u'Peru'
),
(
u
"PE"
,
u"Peru"
),
(
u
'PH'
,
u'Philippines'
),
(
u
"PH"
,
u"Philippines"
),
(
u
'PN'
,
u'Pitcairn'
),
(
u
"PN"
,
u"Pitcairn"
),
(
u
'PL'
,
u'Poland'
),
(
u
"PL"
,
u"Poland"
),
(
u
'PT'
,
u'Portugal'
),
(
u
"PT"
,
u"Portugal"
),
(
u
'PR'
,
u'Puerto Rico'
),
(
u
"PR"
,
u"Puerto Rico"
),
(
u
'QA'
,
u'Qatar'
),
(
u
"QA"
,
u"Qatar"
),
(
u
'RO'
,
u'Romania'
),
(
u
"RE"
,
u"Réunion"
),
(
u
'RU'
,
u'Russian Federation'
),
(
u
"RO"
,
u"Romania"
),
(
u
'RW'
,
u'Rwanda'
),
(
u
"RU"
,
u"Russia"
),
(
u
'RE'
,
u'R
\xe9
union'
),
(
u
"RW"
,
u"Rwanda"
),
(
u
'BL'
,
u'Saint Barth
\xe9
lemy'
),
(
u
"BL"
,
u"Saint Barthélemy"
),
(
u
'SH'
,
u'Saint Helena, Ascension and Tristan da Cunha'
),
(
u
"SH"
,
u"Saint Helena, Ascension and Tristan da Cunha"
),
(
u
'KN'
,
u'Saint Kitts and Nevis'
),
(
u
"KN"
,
u"Saint Kitts and Nevis"
),
(
u
'LC'
,
u'Saint Lucia'
),
(
u
"LC"
,
u"Saint Lucia"
),
(
u
'MF'
,
u'Saint Martin (French part)'
),
(
u
"MF"
,
u"Saint Martin (French part)"
),
(
u
'PM'
,
u'Saint Pierre and Miquelon'
),
(
u
"PM"
,
u"Saint Pierre and Miquelon"
),
(
u
'VC'
,
u'Saint Vincent and the Grenadines'
),
(
u
"VC"
,
u"Saint Vincent and the Grenadines"
),
(
u
'WS'
,
u'Samoa'
),
(
u
"WS"
,
u"Samoa"
),
(
u
'SM'
,
u'San Marino'
),
(
u
"SM"
,
u"San Marino"
),
(
u
'ST'
,
u'Sao Tome and Principe'
),
(
u
"ST"
,
u"Sao Tome and Principe"
),
(
u
'SA'
,
u'Saudi Arabia'
),
(
u
"SA"
,
u"Saudi Arabia"
),
(
u
'SN'
,
u'Senegal'
),
(
u
"SN"
,
u"Senegal"
),
(
u
'RS'
,
u'Serbia'
),
(
u
"RS"
,
u"Serbia"
),
(
u
'SC'
,
u'Seychelles'
),
(
u
"SC"
,
u"Seychelles"
),
(
u
'SL'
,
u'Sierra Leone'
),
(
u
"SL"
,
u"Sierra Leone"
),
(
u
'SG'
,
u'Singapore'
),
(
u
"SG"
,
u"Singapore"
),
(
u
'SX'
,
u'Sint Maarten (Dutch part)'
),
(
u
"SX"
,
u"Sint Maarten (Dutch part)"
),
(
u
'SK'
,
u'Slovakia'
),
(
u
"SK"
,
u"Slovakia"
),
(
u
'SI'
,
u'Slovenia'
),
(
u
"SI"
,
u"Slovenia"
),
(
u
'SB'
,
u'Solomon Islands'
),
(
u
"SB"
,
u"Solomon Islands"
),
(
u
'SO'
,
u'Somalia'
),
(
u
"SO"
,
u"Somalia"
),
(
u
'ZA'
,
u'South Africa'
),
(
u
"ZA"
,
u"South Africa"
),
(
u
'GS'
,
u'South Georgia and the South Sandwich Islands'
),
(
u
"GS"
,
u"South Georgia and the South Sandwich Islands"
),
(
u
'SS'
,
u'South Sudan'
),
(
u
"KR"
,
u"South Korea"
),
(
u
'ES'
,
u'Spain'
),
(
u
"SS"
,
u"South Sudan"
),
(
u
'LK'
,
u'Sri Lanka'
),
(
u
"ES"
,
u"Spain"
),
(
u
'SD'
,
u'Sudan'
),
(
u
"LK"
,
u"Sri Lanka"
),
(
u
'SR'
,
u'Suriname'
),
(
u
"SD"
,
u"Sudan"
),
(
u
'SJ'
,
u'Svalbard and Jan Mayen'
),
(
u
"SR"
,
u"Suriname"
),
(
u
'SZ'
,
u'Swaziland'
),
(
u
"SJ"
,
u"Svalbard and Jan Mayen"
),
(
u
'SE'
,
u'Sweden'
),
(
u
"SZ"
,
u"Swaziland"
),
(
u
'CH'
,
u'Switzerland'
),
(
u
"SE"
,
u"Sweden"
),
(
u
'SY'
,
u'Syrian Arab Republic'
),
(
u
"CH"
,
u"Switzerland"
),
(
u
'TW'
,
u'Taiwan'
),
(
u
"SY"
,
u"Syria"
),
(
u
'TJ'
,
u'Tajikistan'
),
(
u
"TW"
,
u"Taiwan"
),
(
u
'TZ'
,
u'Tanzania, United Republic of'
),
(
u
"TJ"
,
u"Tajikistan"
),
(
u
'TH'
,
u'Thailand'
),
(
u
"TZ"
,
u"Tanzania"
),
(
u
'TL'
,
u'Timor-Leste'
),
(
u
"TH"
,
u"Thailand"
),
(
u
'TG'
,
u'Togo'
),
(
u
"TL"
,
u"Timor-Leste"
),
(
u
'TK'
,
u'Tokelau'
),
(
u
"TG"
,
u"Togo"
),
(
u
'TO'
,
u'Tonga'
),
(
u
"TK"
,
u"Tokelau"
),
(
u
'TT'
,
u'Trinidad and Tobago'
),
(
u
"TO"
,
u"Tonga"
),
(
u
'TN'
,
u'Tunisia'
),
(
u
"TT"
,
u"Trinidad and Tobago"
),
(
u
'TR'
,
u'Turkey'
),
(
u
"TN"
,
u"Tunisia"
),
(
u
'TM'
,
u'Turkmenistan'
),
(
u
"TR"
,
u"Turkey"
),
(
u
'TC'
,
u'Turks and Caicos Islands'
),
(
u
"TM"
,
u"Turkmenistan"
),
(
u
'TV'
,
u'Tuvalu'
),
(
u
"TC"
,
u"Turks and Caicos Islands"
),
(
u
'UG'
,
u'Uganda'
),
(
u
"TV"
,
u"Tuvalu"
),
(
u
'UA'
,
u'Ukraine'
),
(
u
"UG"
,
u"Uganda"
),
(
u
'AE'
,
u'United Arab Emirates'
),
(
u
"UA"
,
u"Ukraine"
),
(
u
'GB'
,
u'United Kingdom'
),
(
u
"AE"
,
u"United Arab Emirates"
),
(
u
'US'
,
u'United States'
),
(
u
"GB"
,
u"United Kingdom of Great Britain and Northern Ireland"
),
(
u
'UM'
,
u'United States Minor Outlying Islands'
),
(
u
"UM"
,
u"United States Minor Outlying Islands"
),
(
u
'UY'
,
u'Uruguay'
),
(
u
"US"
,
u"United States of America"
),
(
u
'UZ'
,
u'Uzbekistan'
),
(
u
"UY"
,
u"Uruguay"
),
(
u
'VU'
,
u'Vanuatu'
),
(
u
"UZ"
,
u"Uzbekistan"
),
(
u
'VE'
,
u'Venezuela, Bolivarian Republic of'
),
(
u
"VU"
,
u"Vanuatu"
),
(
u
'VN'
,
u'Viet Nam'
),
(
u
"VE"
,
u"Venezuela"
),
(
u
'VG'
,
u'Virgin Islands (British)'
),
(
u
"VN"
,
u"Vietnam"
),
(
u
'VI'
,
u'Virgin Islands (U.S.)'
),
(
u
"VG"
,
u"Virgin Islands (British)"
),
(
u
'WF'
,
u'Wallis and Futuna'
),
(
u
"VI"
,
u"Virgin Islands (U.S.)"
),
(
u
'EH'
,
u'Western Sahara'
),
(
u
"WF"
,
u"Wallis and Futuna"
),
(
u
'YE'
,
u'Yemen'
),
(
u
"EH"
,
u"Western Sahara"
),
(
u
'ZM'
,
u'Zambia'
),
(
u
"YE"
,
u"Yemen"
),
(
u
'ZW'
,
u'Zimbabwe'
),
(
u
"ZM"
,
u"Zambia"
),
(
u
'AX'
,
u'
\xc5
land Islands'
)
(
u
"ZW"
,
u"Zimbabwe"
),
]
]
openedx/core/djangoapps/user_api/views.py
View file @
ab912fa8
...
@@ -581,22 +581,13 @@ class RegistrationView(APIView):
...
@@ -581,22 +581,13 @@ class RegistrationView(APIView):
# Translators: This label appears above a dropdown menu on the registration
# Translators: This label appears above a dropdown menu on the registration
# form used to select the country in which the user lives.
# form used to select the country in which the user lives.
country_label
=
_
(
u"Country"
)
country_label
=
_
(
u"Country"
)
sorted_countries
=
sorted
(
countries
.
countries
,
key
=
lambda
(
__
,
name
):
unicode
(
name
)
)
options
=
[
(
country_code
,
unicode
(
country_name
))
for
country_code
,
country_name
in
sorted_countries
]
error_msg
=
_
(
u"Please select your Country."
)
error_msg
=
_
(
u"Please select your Country."
)
form_desc
.
add_field
(
form_desc
.
add_field
(
"country"
,
"country"
,
label
=
country_label
,
label
=
country_label
,
field_type
=
"select"
,
field_type
=
"select"
,
options
=
options
,
options
=
list
(
countries
)
,
include_default_option
=
True
,
include_default_option
=
True
,
required
=
required
,
required
=
required
,
error_messages
=
{
error_messages
=
{
...
...
requirements/edx/base.txt
View file @
ab912fa8
...
@@ -16,7 +16,7 @@ defusedxml==0.4.1
...
@@ -16,7 +16,7 @@ defusedxml==0.4.1
distribute>=0.6.28, <0.7
distribute>=0.6.28, <0.7
django-babel-underscore==0.1.0
django-babel-underscore==0.1.0
django-celery==3.1.16
django-celery==3.1.16
django-countries==
2.1.2
django-countries==
3.3
django-extensions==1.2.5
django-extensions==1.2.5
django-filter==0.6.0
django-filter==0.6.0
django-followit==0.0.3
django-followit==0.0.3
...
@@ -88,6 +88,7 @@ xmltodict==0.4.1
...
@@ -88,6 +88,7 @@ xmltodict==0.4.1
django-ratelimit-backend==0.6
django-ratelimit-backend==0.6
unicodecsv==0.9.4
unicodecsv==0.9.4
django-require==1.0.6
django-require==1.0.6
pyuca==1.1
# Used for shopping cart's pdf invoice/receipt generation
# Used for shopping cart's pdf invoice/receipt generation
reportlab==3.1.44
reportlab==3.1.44
...
...
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