1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 10:58:33 +00:00

Split db&ldap in pubuser

This commit is contained in:
zhengxie
2014-10-10 15:35:47 +08:00
parent 9086257113
commit 975b484eda
4 changed files with 45 additions and 19 deletions

View File

@@ -13,7 +13,19 @@
{% endblock %} {% endblock %}
{% block right_panel %} {% block right_panel %}
<h3 class="hd">{% trans "Members" %}</h3> {% if search %}
<h3 class="hd">{% trans "Search Results" %}</h3>
{% else %}
<div class="tabnav ovhd">
<ul class="tabnav-tabs fleft">
<li class="tabnav-tab {% if not ldap %}tabnav-tab-cur{%endif%}"><a href="{% url 'pubuser' %}">{% trans "Database" %}</a></li>
{% if have_ldap_user %}
<li class="tabnav-tab {% if ldap %}tabnav-tab-cur{%endif%}"><a href="{% url 'pubuser' %}?ldap=1">{% trans "LDAP" %}</a></li>
{% endif %}
</ul>
</div>
{% endif %}
{% if users %} {% if users %}
<ul class="user-list"> <ul class="user-list">
{% for u in users %} {% for u in users %}
@@ -34,17 +46,17 @@
{% if show_paginator %} {% if show_paginator %}
<div id="paginator"> <div id="paginator">
{% if has_prev %} {% if has_prev %}
<a href="?page={{ current_page|add:"-1" }}">{% trans "Previous" %}</a> <a href="?page={{ current_page|add:"-1" }}{% if ldap %}&ldap=1{%endif%}">{% trans "Previous" %}</a>
{% endif %} {% endif %}
{% for pr in page_range %} {% for pr in page_range %}
{% if pr == current_page %} {% if pr == current_page %}
<span class="cur">{{ pr }}</span> <span class="cur">{{ pr }}</span>
{% else %} {% else %}
<a href="?page={{ pr }}" class="pg">{{ pr }}</a> <a href="?page={{ pr }}{% if ldap %}&ldap=1{%endif%}" class="pg">{{ pr }}</a>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% if has_next %} {% if has_next %}
<a href="?page={{ current_page|add:"1" }}">{% trans "Next" %}</a> <a href="?page={{ current_page|add:"1" }}{% if ldap %}&ldap=1{%endif%}">{% trans "Next" %}</a>
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}

View File

@@ -7,7 +7,6 @@
<h3>{% trans "Search User"%}</h3> <h3>{% trans "Search User"%}</h3>
<form id="search-user-form" method="get" action="."> <form id="search-user-form" method="get" action=".">
<p class="tip">{% trans "Tip: Use * to match any number of characters." %}</p>
<label>{% trans "Email" %}</label><input type="text" name="email" class="input" value="{{email}}" /><br /> <label>{% trans "Email" %}</label><input type="text" name="email" class="input" value="{{email}}" /><br />
<input type="submit" value="{% trans "Submit" %}" class="submit" /> <input type="submit" value="{% trans "Submit" %}" class="submit" />
</form> </form>

View File

@@ -1464,9 +1464,6 @@ def get_pub_users(request, start, limit):
raise Http404 # no pubuser in cloud mode raise Http404 # no pubuser in cloud mode
else: 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 return users_plus_one
@@ -1479,12 +1476,12 @@ def count_pub_users(request):
elif request.cloud_mode: elif request.cloud_mode:
return 0 return 0
else: else:
return seaserv.count_emailusers() return seaserv.ccnet_threaded_rpc.count_emailusers('DB')
@login_required @login_required
def pubuser(request): 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(): if not request.user.permissions.can_view_org():
raise Http404 raise Http404
@@ -1496,13 +1493,30 @@ def pubuser(request):
current_page = 1 current_page = 1
per_page = 20 # show 20 users per-page per_page = 20 # show 20 users per-page
# 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), users_plus_one = get_pub_users(request, per_page * (current_page - 1),
per_page + 1) per_page + 1)
has_prev = False if current_page == 1 else True has_prev = False if current_page == 1 else True
has_next = True if len(users_plus_one) == per_page + 1 else False has_next = True if len(users_plus_one) == per_page + 1 else False
if ldap and have_ldap_user:
emailusers_count = seaserv.ccnet_threaded_rpc.count_emailusers('LDAP')
else:
emailusers_count = count_pub_users(request) emailusers_count = count_pub_users(request)
num_pages = int(ceil(emailusers_count / float(per_page))) num_pages = int(ceil(emailusers_count / float(per_page)))
page_range = get_page_range(current_page, num_pages) page_range = get_page_range(current_page, num_pages)
show_paginator = True if len(page_range) > 1 else False show_paginator = True if len(page_range) > 1 else False
@@ -1526,6 +1540,8 @@ def pubuser(request):
'has_next': has_next, 'has_next': has_next,
'page_range': page_range, 'page_range': page_range,
'show_paginator': show_paginator, 'show_paginator': show_paginator,
'have_ldap_user': have_ldap_user,
'ldap': ldap,
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))
@login_required_ajax @login_required_ajax

View File

@@ -318,7 +318,6 @@ def sys_user_admin_admins(request):
@login_required @login_required
@sys_staff_required @sys_staff_required
def user_info(request, email): def user_info(request, email):
owned_repos = seafile_api.get_owned_repo_list(email) owned_repos = seafile_api.get_owned_repo_list(email)
quota = seafile_api.get_user_quota(email) quota = seafile_api.get_user_quota(email)
@@ -795,16 +794,16 @@ def user_search(request):
"""Search a user. """Search a user.
""" """
email = request.GET.get('email', '') 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]) last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
for user in users: for user in users:
try: try:
user.self_usage = seafile_api.get_user_self_usage(user.email) user.self_usage = seafile_api.get_user_self_usage(user.email)
user.share_usage = seafile_api.get_user_share_usage(user.email) user.share_usage = seafile_api.get_user_share_usage(user.email)
user.quota = seafile_api.get_user_quota(user.email) user.quota = seafile_api.get_user_quota(user.email)
except: except SearpcError as e:
logger.error(e)
user.self_usage = -1 user.self_usage = -1
user.share_usage = -1 user.share_usage = -1
user.quota = -1 user.quota = -1