diff --git a/seahub/templates/pubuser.html b/seahub/templates/pubuser.html
index fd4e07eefc..305e33344c 100644
--- a/seahub/templates/pubuser.html
+++ b/seahub/templates/pubuser.html
@@ -13,7 +13,19 @@
{% endblock %}
{% block right_panel %}
-
{% trans "Members" %}
+{% if search %}
+{% trans "Search Results" %}
+{% else %}
+
+{% endif %}
+
{% if users %}
diff --git a/seahub/views/__init__.py b/seahub/views/__init__.py
index dacf366744..730253635c 100644
--- a/seahub/views/__init__.py
+++ b/seahub/views/__init__.py
@@ -1464,10 +1464,7 @@ def get_pub_users(request, start, limit):
raise Http404 # no pubuser in cloud mode
else:
- # Get ldap users first, if no users found, use database.
- users_plus_one = seaserv.get_emailusers('LDAP', start, limit)
- if len(users_plus_one) == 0:
- users_plus_one = seaserv.get_emailusers('DB', start, limit)
+ users_plus_one = seaserv.get_emailusers('DB', start, limit)
return users_plus_one
def count_pub_users(request):
@@ -1479,12 +1476,12 @@ def count_pub_users(request):
elif request.cloud_mode:
return 0
else:
- return seaserv.count_emailusers()
+ return seaserv.ccnet_threaded_rpc.count_emailusers('DB')
@login_required
def pubuser(request):
"""
- Show public users.
+ Show public users in database or ldap depending on request arg ``ldap``.
"""
if not request.user.permissions.can_view_org():
raise Http404
@@ -1496,13 +1493,30 @@ def pubuser(request):
current_page = 1
per_page = 20 # show 20 users per-page
- users_plus_one = get_pub_users(request, per_page * (current_page - 1),
- per_page + 1)
+ # Show LDAP users or Database users.
+ have_ldap_user = True if len(seaserv.get_emailusers('LDAP', 0, 1)) > 0 else False
+
+ try:
+ ldap = True if int(request.GET.get('ldap', 0)) == 1 else False
+ except ValueError:
+ ldap = False
+
+ if ldap and have_ldap_user:
+ users_plus_one = seaserv.get_emailusers('LDAP',
+ per_page * (current_page - 1),
+ per_page + 1)
+ else:
+ users_plus_one = get_pub_users(request, per_page * (current_page - 1),
+ per_page + 1)
has_prev = False if current_page == 1 else True
has_next = True if len(users_plus_one) == per_page + 1 else False
- emailusers_count = count_pub_users(request)
+ if ldap and have_ldap_user:
+ emailusers_count = seaserv.ccnet_threaded_rpc.count_emailusers('LDAP')
+ else:
+ emailusers_count = count_pub_users(request)
+
num_pages = int(ceil(emailusers_count / float(per_page)))
page_range = get_page_range(current_page, num_pages)
show_paginator = True if len(page_range) > 1 else False
@@ -1526,6 +1540,8 @@ def pubuser(request):
'has_next': has_next,
'page_range': page_range,
'show_paginator': show_paginator,
+ 'have_ldap_user': have_ldap_user,
+ 'ldap': ldap,
}, context_instance=RequestContext(request))
@login_required_ajax
diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py
index 9b6370a14d..253ee2964b 100644
--- a/seahub/views/sysadmin.py
+++ b/seahub/views/sysadmin.py
@@ -318,7 +318,6 @@ def sys_user_admin_admins(request):
@login_required
@sys_staff_required
def user_info(request, email):
-
owned_repos = seafile_api.get_owned_repo_list(email)
quota = seafile_api.get_user_quota(email)
@@ -795,16 +794,16 @@ def user_search(request):
"""Search a user.
"""
email = request.GET.get('email', '')
- email_patt = email.replace('*', '%')
-
- users = ccnet_threaded_rpc.search_emailusers(email_patt, -1, -1)
+
+ users = ccnet_threaded_rpc.search_emailusers(email, -1, -1)
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
for user in users:
try:
user.self_usage = seafile_api.get_user_self_usage(user.email)
user.share_usage = seafile_api.get_user_share_usage(user.email)
user.quota = seafile_api.get_user_quota(user.email)
- except:
+ except SearpcError as e:
+ logger.error(e)
user.self_usage = -1
user.share_usage = -1
user.quota = -1