From a07d243fdb6d2b98a824a3a31af571cdcc340be4 Mon Sep 17 00:00:00 2001
From: Diana Huang <dkh@edx.org>
Date: Thu, 13 Feb 2014 14:50:34 -0500
Subject: [PATCH] Clean up the display and dialog to use user preferences
 instead of the current language.

---
 common/djangoapps/student/views.py                 | 14 ++++++++------
 common/djangoapps/user_api/middleware.py           |  4 ++--
 lms/envs/common.py                                 |  2 ++
 .../dashboard/_dashboard_info_language.html        |  2 +-
 lms/templates/modal/_modal-settings-language.html  |  2 +-
 5 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py
index b685a0ad4dd..ead9c67db6f 100644
--- a/common/djangoapps/student/views.py
+++ b/common/djangoapps/student/views.py
@@ -63,6 +63,7 @@ import external_auth.views
 
 from bulk_email.models import Optout, CourseAuthorization
 import shoppingcart
+from user_api.models import UserPreference, LANGUAGE_KEY
 
 import track.views
 
@@ -472,13 +473,13 @@ def dashboard(request):
 
     language_options = DarkLangConfig.current().released_languages_list
 
-    if not language_options:
-        language_options = [settings.LANGUAGE_CODE]
+    language_options.append(settings.LANGUAGE_CODE)
 
-    try:
-        current_language = translation.get_language_info(translation.get_language())
-    except KeyError:
-        current_language = translation.get_language_info(settings.LANGUAGE_CODE)
+    cur_lang_code = UserPreference.get_preference(request.user, LANGUAGE_KEY)
+    if cur_lang_code:
+        current_language = settings.LANGUAGE_DICT[cur_lang_code]
+    else:
+        current_language = settings.LANGUAGE_DICT[settings.LANGUAGE_CODE]
 
     context = {
         'course_enrollment_pairs': course_enrollment_pairs,
@@ -499,6 +500,7 @@ def dashboard(request):
         'billing_email': settings.PAYMENT_SUPPORT_EMAIL,
         'language_options': language_options,
         'current_language': current_language,
+        'current_language_code': cur_lang_code,
     }
 
     return render_to_response('dashboard.html', context)
diff --git a/common/djangoapps/user_api/middleware.py b/common/djangoapps/user_api/middleware.py
index 97abe476cd5..faeb51423d7 100644
--- a/common/djangoapps/user_api/middleware.py
+++ b/common/djangoapps/user_api/middleware.py
@@ -16,9 +16,9 @@ class UserPreferenceMiddleware(object):
     def process_request(self, request):
         """
         If a user's UserPreference contains a language preference and there is
-        no language set on the session, use the user's preference.
+        no language set on the session (i.e. from dark language overrides), use the user's preference.
         """
-        if 'django_language' not in request.session and request.user.is_authenticated():
+        if request.user.is_authenticated() and 'django_language' not in request.session:
             user_pref = UserPreference.get_preference(request.user, LANGUAGE_KEY)
             if user_pref:
                 request.session['django_language'] = user_pref
diff --git a/lms/envs/common.py b/lms/envs/common.py
index b6a877300bc..0acc47e4b4c 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -555,6 +555,8 @@ LANGUAGES = (
     ('zh-tw', u'台灣正體'),  # Chinese (Taiwan)
 )
 
+LANGUAGE_DICT = dict(LANGUAGES)
+
 USE_I18N = True
 USE_L10N = True
 
diff --git a/lms/templates/dashboard/_dashboard_info_language.html b/lms/templates/dashboard/_dashboard_info_language.html
index 9314c4c7357..606895c763e 100644
--- a/lms/templates/dashboard/_dashboard_info_language.html
+++ b/lms/templates/dashboard/_dashboard_info_language.html
@@ -7,5 +7,5 @@
     ${_("Preferred Language")}
     (<a href="#change_language" rel="leanModal" class="edit-language">${_("edit")}</a>)
   </span>
-  <span class="data">${current_language['name_local']}</span>
+  <span class="data">${current_language}</span>
 </li>
diff --git a/lms/templates/modal/_modal-settings-language.html b/lms/templates/modal/_modal-settings-language.html
index 709e03a22a7..c0858c711d2 100644
--- a/lms/templates/modal/_modal-settings-language.html
+++ b/lms/templates/modal/_modal-settings-language.html
@@ -34,7 +34,7 @@
             % for abbrv in language_options:
               % for language in settings.LANGUAGES:
                 % if abbrv == language[0]:
-                  % if abbrv == current_language['code']:
+                  % if abbrv == current_language_code:
                     <option value="${language[0]}" selected="selected">${language[1]}</option>
                   % else:
                     <option value="${language[0]}">${language[1]}</option>
-- 
GitLab