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:
@@ -11,6 +11,7 @@ import csv, chardet, StringIO
|
|||||||
import time
|
import time
|
||||||
from constance import config
|
from constance import config
|
||||||
|
|
||||||
|
from django.db.models import Q
|
||||||
from django.conf import settings as dj_settings
|
from django.conf import settings as dj_settings
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
@@ -22,7 +23,7 @@ from django.utils.translation import ugettext as _
|
|||||||
|
|
||||||
import seaserv
|
import seaserv
|
||||||
from seaserv import ccnet_threaded_rpc, seafserv_threaded_rpc, \
|
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 pysearpc import SearpcError
|
||||||
|
|
||||||
from seahub.base.accounts import User
|
from seahub.base.accounts import User
|
||||||
@@ -1767,10 +1768,24 @@ def user_search(request):
|
|||||||
"""
|
"""
|
||||||
email = request.GET.get('email', '')
|
email = request.GET.get('email', '')
|
||||||
|
|
||||||
users = ccnet_threaded_rpc.search_emailusers('DB', email, -1, -1)
|
# search user from ccnet db
|
||||||
ldap_users = ccnet_threaded_rpc.search_emailusers('LDAP', email, -1, -1)
|
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)
|
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])
|
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
|
||||||
if ENABLE_TRIAL_ACCOUNT:
|
if ENABLE_TRIAL_ACCOUNT:
|
||||||
trial_users = TrialAccount.objects.filter(user_or_org__in=[x.email for x in users])
|
trial_users = TrialAccount.objects.filter(user_or_org__in=[x.email for x in users])
|
||||||
|
52
tests/seahub/views/sysadmin/test_user_search.py
Normal file
52
tests/seahub/views/sysadmin/test_user_search.py
Normal 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)
|
Reference in New Issue
Block a user