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;
|
margin-top:8px;
|
||||||
}
|
}
|
||||||
input[type=submit]:hover,
|
input[type=submit]:hover,
|
||||||
|
input[type=reset]:hover,
|
||||||
input[type=button]:hover,
|
input[type=button]:hover,
|
||||||
button:hover,
|
button:hover,
|
||||||
.fileinput-button:hover {
|
.fileinput-button:hover {
|
||||||
@@ -2536,7 +2537,8 @@ textarea:-moz-placeholder {/* for FF */
|
|||||||
font-size:16px;
|
font-size:16px;
|
||||||
color:#aaa;
|
color:#aaa;
|
||||||
}
|
}
|
||||||
#search-form {
|
#search-form,
|
||||||
|
#search-user-form{
|
||||||
padding:7px 5px;
|
padding:7px 5px;
|
||||||
height:auto;
|
height:auto;
|
||||||
background:#f7f7f8;
|
background:#f7f7f8;
|
||||||
|
@@ -1,12 +1,13 @@
|
|||||||
{% extends "admin_base.html" %}
|
{% extends "admin_base.html" %}
|
||||||
{% load seahub_tags i18n %}
|
{% load seahub_tags i18n %}
|
||||||
{% load url from future %}
|
|
||||||
{% block nav_useradmin_class %}class="cur"{% endblock %}
|
{% block nav_useradmin_class %}class="cur"{% endblock %}
|
||||||
|
|
||||||
{% block main_panel %}
|
{% block main_panel %}
|
||||||
|
|
||||||
<h3>{% trans "All Members" %}</h3>
|
<h3>{% trans "All Members" %}</h3>
|
||||||
<button class="add" id="add-user-btn">{% trans "Add new user" %}</button>
|
<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 %}
|
<form id="add-user-form" action="" method="post" class="hide">{% csrf_token %}
|
||||||
<h3>{% trans "Add new user" %}</h3>
|
<h3>{% trans "Add new user" %}</h3>
|
||||||
<label for="id_email">{% trans "Email" %}</label><br />
|
<label for="id_email">{% trans "Email" %}</label><br />
|
||||||
@@ -112,6 +113,10 @@ $('#add-user-btn').click(function() {
|
|||||||
$('#add-user-form').modal();
|
$('#add-user-form').modal();
|
||||||
$('#simplemodal-container').css({'width':'auto'});
|
$('#simplemodal-container').css({'width':'auto'});
|
||||||
});
|
});
|
||||||
|
$('#search-user-btn').click(function() {
|
||||||
|
location.href = "{% url 'user_search' %}";
|
||||||
|
});
|
||||||
|
|
||||||
$('#add-user-form').submit(function() {
|
$('#add-user-form').submit(function() {
|
||||||
var form = $(this),
|
var form = $(this),
|
||||||
form_id = $(this).attr('id'),
|
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, \
|
from seahub.views.wiki import personal_wiki, personal_wiki_pages, \
|
||||||
personal_wiki_create, personal_wiki_page_new, personal_wiki_page_edit, \
|
personal_wiki_create, personal_wiki_page_new, personal_wiki_page_edit, \
|
||||||
personal_wiki_page_delete
|
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, \
|
sys_group_admin, user_info, user_add, user_remove, user_make_admin, \
|
||||||
user_remove_admin, user_reset, user_activate, sys_publink_admin
|
user_remove_admin, user_reset, user_activate, sys_publink_admin
|
||||||
from seahub.views.ajax import *
|
from seahub.views.ajax import *
|
||||||
@@ -148,6 +148,7 @@ urlpatterns = patterns('',
|
|||||||
url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
|
url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
|
||||||
url(r'^useradmin/add/$', user_add, name="user_add"),
|
url(r'^useradmin/add/$', user_add, name="user_add"),
|
||||||
(r'^useradmin/remove/(?P<user_id>[^/]+)/$', user_remove),
|
(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/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/removeadmin/(?P<user_id>[^/]+)/$', user_remove_admin, name='user_remove_admin'),
|
||||||
url(r'^useradmin/info/(?P<email>[^/]+)/$', user_info, name='user_info'),
|
url(r'^useradmin/info/(?P<email>[^/]+)/$', user_info, name='user_info'),
|
||||||
|
@@ -418,3 +418,38 @@ def sys_publink_admin(request):
|
|||||||
'page_next': page_next,
|
'page_next': page_next,
|
||||||
},
|
},
|
||||||
context_instance=RequestContext(request))
|
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