From 9219d9fd34ef25b4a8d52341008ca007ece58beb Mon Sep 17 00:00:00 2001 From: zhengxie Date: Sat, 7 Sep 2013 11:44:21 +0800 Subject: [PATCH] [sysadmin] Search user --- media/css/seahub.css | 4 +- seahub/templates/sysadmin/sys_useradmin.html | 7 +- seahub/templates/sysadmin/user_search.html | 105 +++++++++++++++++++ seahub/urls.py | 3 +- seahub/views/sysadmin.py | 35 +++++++ 5 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 seahub/templates/sysadmin/user_search.html diff --git a/media/css/seahub.css b/media/css/seahub.css index d67a55c1ec..d12959ba96 100644 --- a/media/css/seahub.css +++ b/media/css/seahub.css @@ -110,6 +110,7 @@ input.submit { margin-top:8px; } input[type=submit]:hover, +input[type=reset]:hover, input[type=button]:hover, button:hover, .fileinput-button:hover { @@ -2536,7 +2537,8 @@ textarea:-moz-placeholder {/* for FF */ font-size:16px; color:#aaa; } -#search-form { +#search-form, +#search-user-form{ padding:7px 5px; height:auto; background:#f7f7f8; diff --git a/seahub/templates/sysadmin/sys_useradmin.html b/seahub/templates/sysadmin/sys_useradmin.html index ce33828c45..57a4b1e052 100644 --- a/seahub/templates/sysadmin/sys_useradmin.html +++ b/seahub/templates/sysadmin/sys_useradmin.html @@ -1,12 +1,13 @@ {% extends "admin_base.html" %} {% load seahub_tags i18n %} -{% load url from future %} {% block nav_useradmin_class %}class="cur"{% endblock %} {% block main_panel %}

{% trans "All Members" %}

+ +
{% csrf_token %}

{% trans "Add new user" %}


@@ -112,6 +113,10 @@ $('#add-user-btn').click(function() { $('#add-user-form').modal(); $('#simplemodal-container').css({'width':'auto'}); }); +$('#search-user-btn').click(function() { + location.href = "{% url 'user_search' %}"; +}); + $('#add-user-form').submit(function() { var form = $(this), form_id = $(this).attr('id'), diff --git a/seahub/templates/sysadmin/user_search.html b/seahub/templates/sysadmin/user_search.html new file mode 100644 index 0000000000..16516454bc --- /dev/null +++ b/seahub/templates/sysadmin/user_search.html @@ -0,0 +1,105 @@ +{% extends "admin_base.html" %} +{% load seahub_tags i18n %} + +{% block main_panel %} +

{% trans "Search User"%}

+ + + +
+

+ +

{% trans "Tip: Use * to match any number of characters." %}

+ + +
+

{% trans "User List"%}

+{% if users %} + + + + + + + + + + {% for user in users %} + + + {% if user.props.is_active %} + + {% else %} + + {% endif %} + + + + + {% endfor %} +
{% trans "Email" %}{% trans "Status" %}{% trans "Space Used" %}{% trans "Create At" %}{% trans "Operations" %}
{{ user.email }}{% trans "Activated" %}{% trans "Active" %} + {% if CALC_SHARE_USAGE %} + {{ user.self_usage|filesizeformat }} + {{ user.share_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} + {% else %} + {{ user.self_usage|filesizeformat }} {% if user.quota > 0 %} / {{ user.quota|filesizeformat }} {% endif %} + {% endif %} + {{ user.ctime|tsstr_sec }} + {% if not user.is_self %} + {% trans "Delete" %} + {% trans "ResetPwd" %} + {% if user.is_staff %} + {% trans "Revoke Admin" %} + {% else %} + {% trans "Set Admin" %} + {% endif %} + {% endif %} +
+{% else %} +

{% trans "Empty" %}

+{% endif %} + +
+ {% if current_page != 1 %} + {% trans "Previous" %} + {% endif %} + {% if page_next %} + {% trans "Next" %} + {% endif %} + {% if current_page != 1 or page_next %} + | + {% endif %} + {% trans "Per page: " %} + {% if per_page == 25 %} + 25 + {% else %} + 25 + {% endif %} + {% if per_page == 50 %} + 50 + {% else %} + 50 + {% endif %} + {% if per_page == 100 %} + 100 + {% else %} + 100 + {% endif %} +
+ +{% endblock %} + +{% block extra_script %} + +{% endblock %} diff --git a/seahub/urls.py b/seahub/urls.py index 79d1157cd4..a2dec4677a 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -15,7 +15,7 @@ from share.views import user_share_list, gen_private_file_share, \ from seahub.views.wiki import personal_wiki, personal_wiki_pages, \ personal_wiki_create, personal_wiki_page_new, personal_wiki_page_edit, \ personal_wiki_page_delete -from seahub.views.sysadmin import sys_repo_admin, sys_user_admin, \ +from seahub.views.sysadmin import sys_repo_admin, sys_user_admin, user_search,\ sys_group_admin, user_info, user_add, user_remove, user_make_admin, \ user_remove_admin, user_reset, user_activate, sys_publink_admin from seahub.views.ajax import * @@ -148,6 +148,7 @@ urlpatterns = patterns('', url(r'^sys/notificationadmin/', notification_list, name='notification_list'), url(r'^useradmin/add/$', user_add, name="user_add"), (r'^useradmin/remove/(?P[^/]+)/$', user_remove), + url(r'^useradmin/search/$', user_search, name="user_search"), url(r'^useradmin/makeadmin/(?P[^/]+)/$', user_make_admin, name='user_make_admin'), url(r'^useradmin/removeadmin/(?P[^/]+)/$', user_remove_admin, name='user_remove_admin'), url(r'^useradmin/info/(?P[^/]+)/$', user_info, name='user_info'), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 516f8f273b..8ec10a47ae 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -418,3 +418,38 @@ def sys_publink_admin(request): 'page_next': page_next, }, context_instance=RequestContext(request)) + +@login_required +@sys_staff_required +def user_search(request): + """Search a user. + """ + email = request.GET.get('email', '') + email_patt = email.replace('*', '%') + + # Make sure page request is an int. If not, deliver first page. + try: + current_page = int(request.GET.get('page', '1')) + per_page = int(request.GET.get('per_page', '100')) + except ValueError: + current_page = 1 + per_page = 100 + users_plus_one = ccnet_threaded_rpc.search_emailusers( + email_patt, per_page * (current_page - 1), per_page + 1) + if len(users_plus_one) == per_page + 1: + page_next = True + else: + page_next = False + + users = users_plus_one[:per_page] + + return render_to_response('sysadmin/user_search.html', { + 'users': users, + 'email': email, + 'current_page': current_page, + 'prev_page': current_page-1, + 'next_page': current_page+1, + 'per_page': per_page, + 'page_next': page_next, + }, context_instance=RequestContext(request)) +