1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-21 19:37:28 +00:00

[sysadmin] add search user by name & contact email

This commit is contained in:
lian
2016-07-13 11:22:36 +08:00
parent b518955a28
commit 70adf6d552
2 changed files with 70 additions and 3 deletions

View File

@@ -11,6 +11,7 @@ import csv, chardet, StringIO
import time
from constance import config
from django.db.models import Q
from django.conf import settings as dj_settings
from django.core.urlresolvers import reverse
from django.contrib import messages
@@ -22,7 +23,7 @@ from django.utils.translation import ugettext as _
import seaserv
from seaserv import ccnet_threaded_rpc, seafserv_threaded_rpc, \
seafile_api, get_group, get_group_members
seafile_api, get_group, get_group_members, ccnet_api
from pysearpc import SearpcError
from seahub.base.accounts import User
@@ -1767,10 +1768,24 @@ def user_search(request):
"""
email = request.GET.get('email', '')
users = ccnet_threaded_rpc.search_emailusers('DB', email, -1, -1)
ldap_users = ccnet_threaded_rpc.search_emailusers('LDAP', email, -1, -1)
# search user from ccnet db
users = ccnet_api.search_emailusers('DB', email, -1, -1)
# search user from ccnet ldap
ldap_users = ccnet_api.search_emailusers('LDAP', email, -1, -1)
users.extend(ldap_users)
# search user from profile
users_from_profile = Profile.objects.filter((Q(nickname__icontains=email)) |
Q(contact_email__icontains=email))
for user in users_from_profile:
try:
user_obj = User.objects.get(email=user.user)
except User.DoesNotExist:
continue
users.append(user_obj)
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
if ENABLE_TRIAL_ACCOUNT:
trial_users = TrialAccount.objects.filter(user_or_org__in=[x.email for x in users])

View File

@@ -0,0 +1,52 @@
from django.core.urlresolvers import reverse
from seahub.profile.models import Profile
from seahub.test_utils import BaseTestCase
class UserResetTest(BaseTestCase):
def setUp(self):
self.user_name = self.user.username
def test_can_search_user_from_ccnet(self):
self.login_as(self.admin)
q = self.user_name[:3]
resp = self.client.get(reverse('user_search') + '?email=%s' % q)
self.assertEqual(200, resp.status_code)
self.assertTemplateUsed('sysadmin/user_search.html')
self.assertContains(resp, self.user_name)
def test_can_search_user_from_profile_by_name(self):
self.login_as(self.admin)
nickname = 'nickname'
p = Profile.objects.add_or_update(self.user_name, nickname=nickname)
p.save()
resp = self.client.get(reverse('user_search') + '?email=%s' % nickname)
self.assertEqual(200, resp.status_code)
self.assertTemplateUsed('sysadmin/user_search.html')
self.assertContains(resp, self.user_name)
def test_can_search_user_from_profile_by_contact_email(self):
self.login_as(self.admin)
contact_email= 'contact@email.com'
p = Profile.objects.add_or_update(self.user_name, nickname='nickname')
p.contact_email = contact_email
p.save()
resp = self.client.get(reverse('user_search') +
'?email=%s' % contact_email)
self.assertEqual(200, resp.status_code)
self.assertTemplateUsed('sysadmin/user_search.html')
self.assertContains(resp, self.user_name)
def test_search_user_with_invalid_user_permission(self):
self.login_as(self.user)
resp = self.client.get(reverse('user_search') +
'?email=%s' % self.user_name)
self.assertEqual(404, resp.status_code)