添加权限支持搜索

pull/6/head
guanghongwei 2015-02-03 23:03:51 +08:00
parent 70fe42f359
commit 46cc593a9e
12 changed files with 229 additions and 27 deletions

View File

@ -8,6 +8,7 @@ urlpatterns = patterns('jperm.views',
(r'^perm_edit/$', 'perm_edit'), (r'^perm_edit/$', 'perm_edit'),
(r'^perm_list/$', 'perm_list'), (r'^perm_list/$', 'perm_list'),
(r'^perm_list_ajax/$', 'perm_list_ajax'),
(r'^perm_detail/$', 'perm_detail'), (r'^perm_detail/$', 'perm_detail'),
(r'^perm_del/$', 'perm_del'), (r'^perm_del/$', 'perm_del'),
(r'^perm_asset_detail/$', 'perm_asset_detail'), (r'^perm_asset_detail/$', 'perm_asset_detail'),

View File

@ -65,6 +65,41 @@ def perm_list(request):
return render_to_response('jperm/perm_list.html', locals()) return render_to_response('jperm/perm_list.html', locals())
def perm_list_ajax(request):
tab = request.POST.get('tab', 'tab1')
search = request.POST.get('search', '')
if tab == 'tab1':
groups = contact_list = UserGroup.objects.filter(name__icontains=search).order_by('type')
p = paginator = Paginator(contact_list, 10)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
contacts = paginator.page(page)
except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages)
else:
users = contact_list2 = User.objects.filter(name__icontains=search).order_by('id')
p2 = paginator2 = Paginator(contact_list2, 10)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
contacts2 = paginator2.page(page)
except (EmptyPage, InvalidPage):
contacts2 = paginator2.page(paginator2.num_pages)
return render_to_response('jperm/perm_list_ajax.html', locals())
def perm_edit(request): def perm_edit(request):
if request.method == 'GET': if request.method == 'GET':
header_title, path1, path2 = u'缂栬緫鎺堟潈 | Perm Host Edit.', u'jperm', u'perm_edit' header_title, path1, path2 = u'缂栬緫鎺堟潈 | Perm Host Edit.', u'jperm', u'perm_edit'

View File

@ -80,7 +80,7 @@ def perm_count(group_id):
@register.filter(name='group_type_to_str') @register.filter(name='group_type_to_str')
def group_type_to_str(type_name): def group_type_to_str(type_name):
group_types = { group_types = {
'P': '绉佹湁缁', 'P': '鐢ㄦ埛',
'M': '閮ㄩ棬', 'M': '閮ㄩ棬',
'A': '鐢ㄦ埛缁', 'A': '鐢ㄦ埛缁',
} }

View File

@ -259,7 +259,6 @@ def group_add(request, group_type_select='A'):
msg = '' msg = ''
header_title, path1, path2 = '娣诲姞灞炵粍 | Add Group', 'juser', 'group_add' header_title, path1, path2 = '娣诲姞灞炵粍 | Add Group', 'juser', 'group_add'
group_types = { group_types = {
# 'P': '绉佹湁缁',
'M': '閮ㄩ棬', 'M': '閮ㄩ棬',
'A': '鐢ㄦ埛缁', 'A': '鐢ㄦ埛缁',
} }
@ -345,7 +344,6 @@ def group_edit(request):
msg = '' msg = ''
header_title, path1, path2 = '淇敼灞炵粍 | Edit Group', 'juser', 'group_edit' header_title, path1, path2 = '淇敼灞炵粍 | Edit Group', 'juser', 'group_edit'
group_types = { group_types = {
# 'P': '绉佹湁缁',
'M': '閮ㄩ棬', 'M': '閮ㄩ棬',
'A': '鐢ㄦ埛缁', 'A': '鐢ㄦ埛缁',
} }
@ -367,7 +365,6 @@ def group_edit(request):
users_selected = request.POST.getlist('users_selected') users_selected = request.POST.getlist('users_selected')
group_type = request.POST.get('group_type') group_type = request.POST.get('group_type')
group = UserGroup.objects.filter(id=group_id) group = UserGroup.objects.filter(id=group_id)
# return HttpResponse(group_type)
group.update(name=group_name, comment=comment, type=group_type) group.update(name=group_name, comment=comment, type=group_type)
group_update_user(group_id, users_selected) group_update_user(group_id, users_selected)

View File

@ -28,7 +28,7 @@
maxHeight: false, maxHeight: false,
scalePhotos: true, scalePhotos: true,
scrolling: true, scrolling: true,
opacity: 0.9, opacity: 0.3,
preloading: true, preloading: true,
className: false, className: false,
overlayClose: true, overlayClose: true,
@ -418,7 +418,8 @@
$overlay.css({ $overlay.css({
opacity: opacity === opacity ? opacity : '', opacity: opacity === opacity ? opacity : '',
cursor: settings.get('overlayClose') ? 'pointer' : '', cursor: settings.get('overlayClose') ? 'pointer' : '',
visibility: 'visible' visibility: 'visible',
// 'background-color': 'black'
}).show(); }).show();
if (settings.get('closeButton')) { if (settings.get('closeButton')) {

View File

@ -1,6 +1,6 @@
<!-- Mainly scripts --> <!-- Mainly scripts -->
<script src="/static/js/jquery-2.1.1.js"></script> {#<script src="/static/js/jquery-2.1.1.js"></script>#}
<script src="/static/js/bootstrap.min.js"></script> {#<script src="/static/js/bootstrap.min.js"></script>#}
<script src="/static/js/plugins/metisMenu/jquery.metisMenu.js"></script> <script src="/static/js/plugins/metisMenu/jquery.metisMenu.js"></script>
<script src="/static/js/plugins/slimscroll/jquery.slimscroll.min.js"></script> <script src="/static/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
<script src="/static/js/bootstrap-dialog.js"></script> <script src="/static/js/bootstrap-dialog.js"></script>
@ -21,7 +21,8 @@
<script src="/static/js/base.js"></script> <script src="/static/js/base.js"></script>
<!-- pop windows -->
<script src="/static/js/jquery.colorbox.js"></script>
<!-- active menu --> <!-- active menu -->
<script> <script>
@ -29,4 +30,10 @@
var str1 = document.location.pathname.split("/")[2]; var str1 = document.location.pathname.split("/")[2];
$("#"+str).addClass('active'); $("#"+str).addClass('active');
$("#"+str1).addClass('active'); $("#"+str1).addClass('active');
</script>
<script>
$(document).ready(function(){
$(".iframe").colorbox({iframe:true, width:"70%", height:"80%"});
});
</script> </script>

View File

@ -15,9 +15,6 @@
<!-- pop windows -->
<script src="/static/js/jquery.colorbox.js"></script>
<!-- validator js --> <!-- validator js -->
<script src="/static/js/validator/jquery.validator.js"></script> <script src="/static/js/validator/jquery.validator.js"></script>
<script src="/static/js/validator/zh_CN.js"></script> <script src="/static/js/validator/zh_CN.js"></script>

View File

@ -33,8 +33,20 @@
<div class="panel-heading"> <div class="panel-heading">
<div class="panel-options"> <div class="panel-options">
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#tab-1">鎺堟潈缂栬緫</a></li> <li id="tab1" class="active"><a data-toggle="tab" href="#tab-1">鎺堟潈缂栬緫</a></li>
<li class=""><a data-toggle="tab" href="#tab-2">鏌ョ湅鎺堟潈</a></li> <li id="tab2" class=""><a data-toggle="tab" href="#tab-2">鏌ョ湅鎺堟潈</a></li>
<li style="float: right">
<form method="get" action="" class="pull-right mail-search">
<div class="input-group">
<input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search">
<div class="input-group-btn">
<button id='search_btn' type="button" class="btn btn-sm btn-primary">
Search
</button>
</div>
</div>
</form>
</li>
</ul> </ul>
</div> </div>
</div> </div>
@ -47,13 +59,15 @@
<thead> <thead>
<tr> <tr>
<th class="text-center">缁勫悕</th> <th class="text-center">缁勫悕</th>
<th class="text-center">绫诲瀷</th> <th class="text-center">
<span class="text-muted text-xs block">绫诲瀷</span>
</th>
<th class="text-center">鎴愬憳鏁伴噺</th> <th class="text-center">鎴愬憳鏁伴噺</th>
<th class="text-center">鎺堟潈鏁伴噺</th> <th class="text-center">鎺堟潈鏁伴噺</th>
<th class="text-center">鎿嶄綔</th> <th class="text-center">鎿嶄綔</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="perm_edit">
{% for group in contacts.object_list %} {% for group in contacts.object_list %}
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center"> {{ group.name }} </td> <td class="text-center"> {{ group.name }} </td>
@ -61,7 +75,7 @@
<td class="text-center"> {{ group.id|member_count }} </td> <td class="text-center"> {{ group.id|member_count }} </td>
<td class="text-center"> {{ group.id|perm_count }} </td> <td class="text-center"> {{ group.id|perm_count }} </td>
<td class="text-center"> <td class="text-center">
<a href="../perm_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a> <a title="[ {{ group.name }} 鎺堟潈璇︽儏 ]" href="../perm_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
<a href="../perm_edit/?id={{ group.id }}" class="btn btn-xs btn-info">缂栬緫</a> <a href="../perm_edit/?id={{ group.id }}" class="btn btn-xs btn-info">缂栬緫</a>
<a href="../perm_del/?id={{ group.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a> <a href="../perm_del/?id={{ group.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
</td> </td>
@ -120,7 +134,7 @@
<th class="text-center">鎿嶄綔</th> <th class="text-center">鎿嶄綔</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="perm_list">
{% for user in contacts2.object_list %} {% for user in contacts2.object_list %}
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center"> {{ user.name }} </td> <td class="text-center"> {{ user.name }} </td>
@ -128,7 +142,7 @@
<td class="text-center"> {{ user.username | groups_str }} </td> <td class="text-center"> {{ user.username | groups_str }} </td>
<td class="text-center"> {{ user.id | perm_asset_count }} </td> <td class="text-center"> {{ user.id | perm_asset_count }} </td>
<td class="text-center"> <td class="text-center">
<a href="../perm_asset_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a> <a title="[ {{ user.name }} ] 鎺堟潈璇︽儏" href="../perm_asset_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -192,6 +206,29 @@
$(document).ready(function(){ $(document).ready(function(){
$(".iframe").colorbox({iframe:true, width:"70%", height:"70%"}); $(".iframe").colorbox({iframe:true, width:"70%", height:"70%"});
}); });
$(document).ready(function(){
$('#search_btn').click(function(){
if ($('#tab2').attr('class') == 'active'){
var tab='tab2'
} else {
var tab='tab1'
}
var search=$('#search_input').val()
$.post('/jperm/perm_list_ajax/',
{'tab': tab, 'search': search},
function(data){
if ($('#tab2').attr('class') == 'active'){
$('#tab-2').html(data)
} else {
$('#tab-1').html(data)
}
})
})
})
</script> </script>
{% endblock %} {% endblock %}

View File

@ -0,0 +1,132 @@
{% load mytags %}
{% ifequal tab 'tab1' %}
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">缁勫悕</th>
<th class="text-center">
<span class="text-muted text-xs block">绫诲瀷</span>
</th>
<th class="text-center">鎴愬憳鏁伴噺</th>
<th class="text-center">鎺堟潈鏁伴噺</th>
<th class="text-center">鎿嶄綔</th>
</tr>
</thead>
<tbody id="perm_edit">
{% for group in contacts.object_list %}
<tr class="gradeX">
<td class="text-center"> {{ group.name }} </td>
<td class="text-center"> {{ group.type|group_type_to_str }} </td>
<td class="text-center"> {{ group.id|member_count }} </td>
<td class="text-center"> {{ group.id|perm_count }} </td>
<td class="text-center">
<a title="[ {{ group.name }} ] 鎺堟潈璇︽儏" href="../perm_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
<a href="../perm_edit/?id={{ group.id }}" class="btn btn-xs btn-info">缂栬緫</a>
<a href="../perm_del/?id={{ group.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="row">
<div class="col-sm-6">
<div class="dataTables_info" id="editable_info" role="status" aria-live="polite">
Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries
</div>
</div>
<div class="col-sm-6">
<div class="dataTables_paginate paging_simple_numbers" id="editable_paginate">
<ul class="pagination" style="margin-top: 0; float: right">
{% if contacts.has_previous %}
<li class="paginate_button previous" aria-controls="editable" tabindex="0" id="editable_previous">
<a href="?page={{ contacts.previous_page_number }}">Previous</a>
</li>
{% else %}
<li class="paginate_button previous disabled" aria-controls="editable" tabindex="0" id="editable_previous">
<a href="#">Previous</a>
</li>
{% endif %}
{% for page in p.page_range %}
{% ifequal offset1 page %}
<li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>
{% else %}
<li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>
{% endifequal %}
{% endfor %}
{% if contacts.has_next %}
<li class="paginate_button next" aria-controls="editable" tabindex="0" id="editable_next">
<a href="?page={{ contacts.next_page_number }}">Next</a>
</li>
{% else %}
<li class="paginate_button next disabled" aria-controls="editable" tabindex="0" id="editable_next">
<a href="#">Next</a>
</li>
{% endif %}
</ul>
</div>
</div>
</div>
{% else %}
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">鐢ㄦ埛</th>
<th class="text-center">瑙掕壊</th>
<th class="text-center">灞炵粍</th>
<th class="text-center">涓绘満鏁伴噺</th>
<th class="text-center">鎿嶄綔</th>
</tr>
</thead>
<tbody id="perm_list">
{% for user in contacts2.object_list %}
<tr class="gradeX">
<td class="text-center"> {{ user.name }} </td>
<td class="text-center"> {{ user.id | get_role }} </td>
<td class="text-center"> {{ user.username | groups_str }} </td>
<td class="text-center"> {{ user.id | perm_asset_count }} </td>
<td class="text-center">
<a title="{{ user.name }} ] 鎺堟潈璇︽儏" href="../perm_asset_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="row">
<div class="col-sm-6">
<div class="dataTables_info" id="editable_info" role="status" aria-live="polite">
Showing {{ contacts2.start_index }} to {{ contacts2.end_index }} of {{ p2.count }} entries
</div>
</div>
<div class="col-sm-6">
<div class="dataTables_paginate paging_simple_numbers" id="editable_paginate">
<ul class="pagination" style="margin-top: 0; float: right">
{% if contacts2.has_previous %}
<li class="paginate_button previous" aria-controls="editable" tabindex="0" id="editable_previous">
<a href="?page={{ contacts2.previous_page_number }}">Previous</a>
</li>
{% else %}
<li class="paginate_button previous disabled" aria-controls="editable" tabindex="0" id="editable_previous">
<a href="#">Previous</a>
</li>
{% endif %}
{% for page in p2.page_range %}
{% ifequal offset1 page %}
<li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>
{% else %}
<li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>
{% endifequal %}
{% endfor %}
{% if contacts2.has_next %}
<li class="paginate_button next" aria-controls="editable" tabindex="0" id="editable_next">
<a href="?page={{ contacts2.next_page_number }}">Next</a>
</li>
{% else %}
<li class="paginate_button next disabled" aria-controls="editable" tabindex="0" id="editable_next">
<a href="#">Next</a>
</li>
{% endif %}
</ul>
</div>
</div>
</div>
{% endifequal %}

View File

@ -53,7 +53,7 @@
<td class="text-center"> {{ group.id|member_count }} </td> <td class="text-center"> {{ group.id|member_count }} </td>
<td class="text-center"> {{ group.comment }} </td> <td class="text-center"> {{ group.comment }} </td>
<td class="text-center"> <td class="text-center">
<a href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">鎴愬憳</a> <a title="[ {{ group.name }} ] 鎴愬憳淇℃伅" href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">鎴愬憳</a>
<a href="../group_edit/?id={{ group.id }}" class="btn btn-xs btn-info">缂栬緫</a> <a href="../group_edit/?id={{ group.id }}" class="btn btn-xs btn-info">缂栬緫</a>
<a href="../group_del/?id={{ group.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a> <a href="../group_del/?id={{ group.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
</td> </td>

View File

@ -63,7 +63,7 @@
<td class="text-center">{{ user.id|get_role }}</td> <td class="text-center">{{ user.id|get_role }}</td>
<td class="text-center">{{ user.is_active|bool2str }}</td> <td class="text-center">{{ user.is_active|bool2str }}</td>
<td class="text-center"> <td class="text-center">
<a href="../user_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a> <a title="[ {{ user.name }} ] 璇︽儏" href="../user_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
<a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">缂栬緫</a> <a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">缂栬緫</a>
<a href="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a> <a href="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
</td> </td>
@ -115,10 +115,5 @@
</div> </div>
</div> </div>
<script>
$(document).ready(function(){
$(".iframe").colorbox({iframe:true, width:"70%", height:"70%"});
});
</script>
{% endblock %} {% endblock %}

View File

@ -14,7 +14,7 @@
<li id="juser"> <li id="juser">
<a href="#"><i class="fa fa-rebel"></i> <span class="nav-label">鐢ㄦ埛绠$悊</span><span class="fa arrow"></span></a> <a href="#"><i class="fa fa-rebel"></i> <span class="nav-label">鐢ㄦ埛绠$悊</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level"> <ul class="nav nav-second-level">
<li id="user_list"><a href="/juser/user_list/">鏌ョ湅鐢ㄦ埛</a></li> <li id="user_list"><a href="/juser/user_list/">鏌ョ湅鐢ㄦ埛<span class="label label-primary pull-right">16/24</span></a></li>
<li id="user_add"><a href="/juser/user_add/">娣诲姞鐢ㄦ埛</a></li> <li id="user_add"><a href="/juser/user_add/">娣诲姞鐢ㄦ埛</a></li>
<li id="group_list"><a href="/juser/group_list/">鏌ョ湅灞炵粍</a></li> <li id="group_list"><a href="/juser/group_list/">鏌ョ湅灞炵粍</a></li>
<li id="group_add"><a href="/juser/group_add/">娣诲姞灞炵粍</a></li> <li id="group_add"><a href="/juser/group_add/">娣诲姞灞炵粍</a></li>