Selaa lähdekoodia

HUE-3100 [useradmin] Only show language select if user profile is for current user

Add tests
Jenny Kim 9 vuotta sitten
vanhempi
commit
0e66251612

+ 3 - 1
apps/useradmin/src/useradmin/templates/edit_user.mako

@@ -76,7 +76,9 @@ ${ layout.menubar(section='users') }
 
                 ${layout.render_field(form["email"])}
 
-                ${layout.render_field(form["language"])}
+                %if request.user.username == username:
+                  ${layout.render_field(form["language"])}
+                % endif
 
                 % if user.is_superuser:
                   ${layout.render_field(form["groups"])}

+ 22 - 0
apps/useradmin/src/useradmin/tests.py

@@ -33,6 +33,7 @@ from django.test.client import Client
 
 import desktop.conf
 from desktop.lib.django_test_util import make_logged_in_client
+from desktop.lib.test_utils import grant_access
 from desktop.views import home
 from hadoop import pseudo_hdfs4
 
@@ -731,6 +732,27 @@ class TestUserAdmin(BaseUserAdminTests):
     assert_true(u'test_list_for_autocomplete_other_group' in groups, groups)
 
 
+  def test_language_preference(self):
+    # Test that language selection appears in Edit Profile for current user
+    client = make_logged_in_client('test', is_superuser=False, groupname='test')
+    user = User.objects.get(username='test')
+    grant_access('test', 'test', 'useradmin')
+
+    response = client.get('/useradmin/users/edit/test')
+    assert_true("Language Preference" in response.content)
+
+    # Does not appear for superuser editing other profiles
+    other_client = make_logged_in_client('test_super', is_superuser=True, groupname='test')
+    superuser = User.objects.get(username='test_super')
+
+    response = other_client.get('/useradmin/users/edit/test')
+    assert_false("Language Preference" in response.content, response.content)
+
+    # Changing language preference will change language setting
+    response = client.post('/useradmin/users/edit/test', dict(language='ko'))
+    assert_true('<option value="ko" selected="selected">Korean</option>' in response.content)
+
+
 class TestUserAdminWithHadoop(BaseUserAdminTests):
 
   requires_hadoop = True