mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-20 19:08:21 +00:00
[sysadmin] Search user
This commit is contained in:
@@ -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;
|
||||
|
@@ -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 %}
|
||||
|
||||
<h3>{% trans "All Members" %}</h3>
|
||||
<button class="add" id="add-user-btn">{% trans "Add new user" %}</button>
|
||||
<button class="icon-search fright" id="search-user-btn">{% trans "Search user" %}</button>
|
||||
|
||||
<form id="add-user-form" action="" method="post" class="hide">{% csrf_token %}
|
||||
<h3>{% trans "Add new user" %}</h3>
|
||||
<label for="id_email">{% trans "Email" %}</label><br />
|
||||
@@ -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'),
|
||||
|
105
seahub/templates/sysadmin/user_search.html
Normal file
105
seahub/templates/sysadmin/user_search.html
Normal file
@@ -0,0 +1,105 @@
|
||||
{% extends "admin_base.html" %}
|
||||
{% load seahub_tags i18n %}
|
||||
|
||||
{% block main_panel %}
|
||||
<h3>{% trans "Search User"%}</h3>
|
||||
|
||||
<form id="search-user-form" method="get" action=".">
|
||||
<label>{% trans "Email" %}</label>
|
||||
<input type="text" name="email" id="id_email" class="input" value="{{email}}"/><br />
|
||||
<p class="error hide"></p>
|
||||
|
||||
<p class="tip">{% trans "Tip: Use * to match any number of characters." %}</p>
|
||||
<input type="submit" value="{% trans "Submit" %}" class="submit" />
|
||||
<input type="reset" value="{% trans "Reset" %}" class="submit" />
|
||||
</form>
|
||||
<h3>{% trans "User List"%}</h3>
|
||||
{% if users %}
|
||||
<table>
|
||||
<tr>
|
||||
<th width="30%">{% trans "Email" %}</th>
|
||||
<th width="10%">{% trans "Status" %}</th>
|
||||
<th width="20%">{% trans "Space Used" %}</th>
|
||||
<th width="15%">{% trans "Create At" %}</th>
|
||||
<th width="25%">{% trans "Operations" %}</th>
|
||||
</tr>
|
||||
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td><a href="{{ SITE_ROOT }}useradmin/info/{{ user.props.email }}/">{{ user.email }}</a></td>
|
||||
{% if user.props.is_active %}
|
||||
<td>{% trans "Activated" %}</td>
|
||||
{% else %}
|
||||
<td><a href="{{ SITE_ROOT }}useradmin/activate/{{ user.props.id }}/" class="activate op">{% trans "Active" %}</a></td>
|
||||
{% endif %}
|
||||
<td>
|
||||
{% 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 %}
|
||||
</td>
|
||||
<td>{{ user.ctime|tsstr_sec }}</td>
|
||||
<td>
|
||||
{% if not user.is_self %}
|
||||
<a href="#" class="remove-user-btn op" data-url="{{ SITE_ROOT }}useradmin/remove/{{ user.props.id }}/" data-target="{{ user.props.email }}">{% trans "Delete" %}</a>
|
||||
<a href="#" class="reset-user-btn op" data-url="{% url 'user_reset' user.id %}" data-target="{{ user.props.email }}">{% trans "ResetPwd" %}</a>
|
||||
{% if user.is_staff %}
|
||||
<a href="#" data-url="{% url 'user_remove_admin' user.id %}" data-target="{{ user.props.email }}" class="revoke-admin-btn op">{% trans "Revoke Admin" %}</a>
|
||||
{% else %}
|
||||
<a href="#" data-url="{% url 'user_make_admin' user.id %}" data-target="{{ user.props.email }}" class="set-admin-btn op">{% trans "Set Admin" %}</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p>{% trans "Empty" %}</p>
|
||||
{% endif %}
|
||||
|
||||
<div id="paginator">
|
||||
{% if current_page != 1 %}
|
||||
<a href="?email={{email}}&page={{ prev_page }}&per_page={{ per_page }}">{% trans "Previous" %}</a>
|
||||
{% endif %}
|
||||
{% if page_next %}
|
||||
<a href="?email={{email}}&page={{ next_page }}&per_page={{ per_page }}">{% trans "Next" %}</a>
|
||||
{% endif %}
|
||||
{% if current_page != 1 or page_next %}
|
||||
|
|
||||
{% endif %}
|
||||
<span>{% trans "Per page: " %}</span>
|
||||
{% if per_page == 25 %}
|
||||
<span> 25 </span>
|
||||
{% else %}
|
||||
<a href="?email={{email}}&per_page=25" class="per-page">25</a>
|
||||
{% endif %}
|
||||
{% if per_page == 50 %}
|
||||
<span> 50 </span>
|
||||
{% else %}
|
||||
<a href="?email={{email}}&per_page=50" class="per-page">50</a>
|
||||
{% endif %}
|
||||
{% if per_page == 100 %}
|
||||
<span> 100 </span>
|
||||
{% else %}
|
||||
<a href="?email={{email}}&per_page=100" class="per-page">100</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_script %}
|
||||
<script type="text/javascript">
|
||||
$('#search-user-form').submit(function() {
|
||||
var form = $(this),
|
||||
form_id = $(this).attr('id'),
|
||||
email = $.trim(form.children('[name="email"]').val());
|
||||
|
||||
if (!email) {
|
||||
apply_form_error(form_id, "{% trans "Email cannot be blank" %}");
|
||||
return false;
|
||||
}
|
||||
form.submit();
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
@@ -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_id>[^/]+)/$', user_remove),
|
||||
url(r'^useradmin/search/$', user_search, name="user_search"),
|
||||
url(r'^useradmin/makeadmin/(?P<user_id>[^/]+)/$', user_make_admin, name='user_make_admin'),
|
||||
url(r'^useradmin/removeadmin/(?P<user_id>[^/]+)/$', user_remove_admin, name='user_remove_admin'),
|
||||
url(r'^useradmin/info/(?P<email>[^/]+)/$', user_info, name='user_info'),
|
||||
|
@@ -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))
|
||||
|
||||
|
Reference in New Issue
Block a user