From 7a2ad81be26806d99cfa8cebb2755c923d86bb5c Mon Sep 17 00:00:00 2001 From: lian Date: Tue, 1 Nov 2016 11:45:32 +0800 Subject: [PATCH] fix bug when admin searching unexisting user --- seahub/views/sysadmin.py | 8 +++++--- tests/seahub/views/sysadmin/test_user_search.py | 13 ++++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 4085ee80a0..21be848d9e 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -201,6 +201,7 @@ def sys_user_admin(request): trial_users = TrialAccount.objects.filter(user_or_org__in=[x.email for x in users]) else: trial_users = [] + for user in users: if user.email == request.user.email: user.is_self = True @@ -1481,6 +1482,7 @@ def user_search(request): trial_users = TrialAccount.objects.filter(user_or_org__in=[x.email for x in users]) else: trial_users = [] + for user in users: populate_user_info(user) _populate_user_quota_usage(user) @@ -1488,9 +1490,6 @@ def user_search(request): # check user's role user.is_guest = True if get_user_role(user) == GUEST_USER else False user.is_default = True if get_user_role(user) == DEFAULT_USER else False - extra_user_roles = [x for x in get_available_roles() - if x not in get_basic_user_roles()] - # populate user last login time user.last_login = None for last_login in last_logins: @@ -1502,6 +1501,9 @@ def user_search(request): if trial_user.user_or_org == user.email: user.trial_info = {'expire_date': trial_user.expire_date} + extra_user_roles = [x for x in get_available_roles() + if x not in get_basic_user_roles()] + return render_to_response('sysadmin/user_search.html', { 'users': users, 'email': email, diff --git a/tests/seahub/views/sysadmin/test_user_search.py b/tests/seahub/views/sysadmin/test_user_search.py index d16455d929..8abdef1d1d 100644 --- a/tests/seahub/views/sysadmin/test_user_search.py +++ b/tests/seahub/views/sysadmin/test_user_search.py @@ -1,9 +1,11 @@ from django.core.urlresolvers import reverse +from tests.common.utils import randstring + from seahub.profile.models import Profile from seahub.test_utils import BaseTestCase -class UserResetTest(BaseTestCase): +class UserSearchTest(BaseTestCase): def setUp(self): self.user_name = self.user.username @@ -50,3 +52,12 @@ class UserResetTest(BaseTestCase): '?email=%s' % self.user_name) self.assertEqual(404, resp.status_code) + + def test_search_invalid_user(self): + self.login_as(self.admin) + + invalid_user = randstring(20) + resp = self.client.get(reverse('user_search') + '?email=%s' % invalid_user) + self.assertEqual(200, resp.status_code) + self.assertTemplateUsed('sysadmin/user_search.html') + self.assertContains(resp, invalid_user)