修改分页

pull/6/head
guanghongwei 2015-02-15 10:06:02 +08:00
parent b7acef8cb0
commit 56f8f5d09b
7 changed files with 339 additions and 83 deletions

View File

@ -9,7 +9,8 @@ urlpatterns = patterns('jperm.views',
(r'^perm_edit/$', 'perm_edit'), (r'^perm_edit/$', 'perm_edit'),
(r'^perm_add/$', 'perm_add'), (r'^perm_add/$', 'perm_add'),
(r'^perm_list/$', 'perm_list'), (r'^perm_list/$', 'perm_list'),
(r'^perm_list_ajax/$', 'perm_list_ajax'), (r'^perm_user_detail/$', 'perm_user_detail'),
# (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

@ -7,7 +7,7 @@ from jasset.models import Asset, BisGroup
from jperm.models import Perm, SudoPerm, CmdGroup from jperm.models import Perm, SudoPerm, CmdGroup
from django.core.paginator import Paginator, EmptyPage, InvalidPage from django.core.paginator import Paginator, EmptyPage, InvalidPage
from django.db.models import Q from django.db.models import Q
from jumpserver.views import LDAP_ENABLE, ldap_conn, CONF, perm_user_asset from jumpserver.views import LDAP_ENABLE, ldap_conn, CONF, perm_user_asset, page_list_return
if LDAP_ENABLE: if LDAP_ENABLE:
@ -39,21 +39,24 @@ def perm_list(request):
groups = contact_list = Perm.objects.all() groups = contact_list = Perm.objects.all()
users = contact_list2 = User.objects.all().order_by('id') users = contact_list2 = User.objects.all().order_by('id')
p = paginator = Paginator(contact_list, 10) p = paginator = Paginator(contact_list, 10)
p2 = paginator2 = Paginator(contact_list2, 10)
try: try:
page = int(request.GET.get('page', '1')) current_page = int(request.GET.get('page', '1'))
except ValueError: except ValueError:
page = 1 current_page = 1
page_range = page_list_return(len(p.page_range), current_page)
try: try:
contacts = paginator.page(page) contacts = paginator.page(current_page)
contacts2 = paginator2.page(page)
except (EmptyPage, InvalidPage): except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages) contacts = paginator.page(paginator.num_pages)
contacts2 = paginator2.page(paginator2.num_pages)
return render_to_response('jperm/perm_list.html', locals()) return render_to_response('jperm/perm_list.html', locals())
def perm_user_detail(request):
header_title, path1, path2 = u'鐢ㄦ埛鎺堟潈璇︽儏 | Perm User Detail.', u'鎺堟潈绠$悊', u'鎺堟潈璇︽儏'
def user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd_groups_select=''): def user_asset_cmd_groups_get(user_groups_select='', asset_groups_select='', cmd_groups_select=''):
user_groups_select_list = [] user_groups_select_list = []
asset_groups_select_list = [] asset_groups_select_list = []

View File

@ -50,6 +50,14 @@ def jasset_group_add(name, comment, type):
class ServerError(Exception): class ServerError(Exception):
pass pass
def page_list_return(total, current=1):
min_page = current - 2 if current - 4 > 0 else 1
max_page = min_page + 4 if min_page + 4 < total else total
return range(min_page, max_page+1)
def jasset_host_edit(j_id, j_ip, j_idc, j_port, j_type, j_group, j_active, j_comment): def jasset_host_edit(j_id, j_ip, j_idc, j_port, j_type, j_group, j_active, j_comment):
groups = [] groups = []
is_active = {u'': '1', u'': '2'} is_active = {u'': '1', u'': '2'}

View File

@ -20,7 +20,7 @@ from juser.models import UserGroup, User
from connect import PyCrypt, KEY from connect import PyCrypt, KEY
from connect import BASE_DIR from connect import BASE_DIR
from connect import CONF from connect import CONF
from jumpserver.views import md5_crypt, LDAPMgmt, LDAP_ENABLE, ldap_conn from jumpserver.views import md5_crypt, LDAPMgmt, LDAP_ENABLE, ldap_conn, page_list_return
if LDAP_ENABLE: if LDAP_ENABLE:
LDAP_HOST_URL = CONF.get('ldap', 'host_url') LDAP_HOST_URL = CONF.get('ldap', 'host_url')
@ -265,12 +265,14 @@ def group_list(request):
p = paginator = Paginator(contact_list, 10) p = paginator = Paginator(contact_list, 10)
try: try:
page = int(request.GET.get('page', '1')) current_page = int(request.GET.get('page', '1'))
except ValueError: except ValueError:
page = 1 current_page = 1
page_range = page_list_return(len(p.page_range), current_page)
try: try:
contacts = paginator.page(page) contacts = paginator.page(current_page)
except (EmptyPage, InvalidPage): except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages) contacts = paginator.page(paginator.num_pages)
return render_to_response('juser/group_list.html', locals()) return render_to_response('juser/group_list.html', locals())
@ -333,12 +335,14 @@ def user_list(request):
p = paginator = Paginator(contact_list, 10) p = paginator = Paginator(contact_list, 10)
try: try:
page = int(request.GET.get('page', '1')) current_page = int(request.GET.get('page', '1'))
except ValueError: except ValueError:
page = 1 current_page = 1
page_range = page_list_return(len(p.page_range), current_page)
try: try:
contacts = paginator.page(page) contacts = paginator.page(current_page)
except (EmptyPage, InvalidPage): except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages) contacts = paginator.page(paginator.num_pages)
return render_to_response('juser/user_list.html', locals()) return render_to_response('juser/user_list.html', locals())

View File

@ -33,8 +33,8 @@
<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 id="tab1" class="active"><a data-toggle="tab" href="#tab-1">鎺堟潈鏌ョ湅</a></li> <li id="tab1" class="active"><a data-toggle="tab" href="/perm_list/">鎺堟潈鏌ョ湅</a></li>
<li id="tab2" class=""><a data-toggle="tab" href="#tab-2">鐢ㄦ埛鎺堟潈璇︽儏</a></li> <li id="tab2" class=""><a data-toggle="tab" href="/perm_user_detail/">鐢ㄦ埛鎺堟潈璇︽儏</a></li>
<li style="float: right"> <li style="float: right">
<form method="get" action="" class="pull-right mail-search"> <form method="get" action="" class="pull-right mail-search">
<div class="input-group"> <div class="input-group">
@ -107,8 +107,8 @@
<a href="#">Previous</a> <a href="#">Previous</a>
</li> </li>
{% endif %} {% endif %}
{% for page in p.page_range %} {% for page in page_range %}
{% ifequal offset1 page %} {% ifequal current_page page %}
<li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li> <li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>
{% else %} {% else %}
<li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li> <li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>
@ -130,68 +130,68 @@
</div> </div>
<div id="tab-2" class="tab-pane"> <div id="tab-2" class="tab-pane">
<table class="table table-striped table-bordered table-hover " id="editable" > {# <table class="table table-striped table-bordered table-hover " id="editable" >#}
<thead> {# <thead>#}
<tr> {# <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> {# <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 id="perm_list"> {# <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>#}
<td class="text-center"> {{ user.id | get_role }} </td> {# <td class="text-center"> {{ user.id | get_role }} </td>#}
<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 title="[ {{ user.name }} ] 鎺堟潈璇︽儏" href="../perm_asset_detail/?id={{ user.id }}" class="btn btn-xs btn-primary">璇︽儏</a> {# <a title="[ {{ user.name }} ] 鎺堟潈璇︽儏" href="../perm_asset_detail/?id={{ user.id }}" class="btn btn-xs btn-primary">璇︽儏</a>#}
</td> {# </td>#}
</tr> {# </tr>#}
{% endfor %} {# {% endfor %}#}
</tbody> {# </tbody>#}
</table> {# </table>#}
<div class="row"> {# <div class="row">#}
<div class="col-sm-6"> {# <div class="col-sm-6">#}
<div class="dataTables_info" id="editable_info" role="status" aria-live="polite"> {# <div class="dataTables_info" id="editable_info" role="status" aria-live="polite">#}
Showing {{ contacts2.start_index }} to {{ contacts2.end_index }} of {{ p2.count }} entries {# Showing {{ contacts2.start_index }} to {{ contacts2.end_index }} of {{ p2.count }} entries#}
</div> {# </div>#}
</div> {# </div>#}
<div class="col-sm-6"> {# <div class="col-sm-6">#}
<div class="dataTables_paginate paging_simple_numbers" id="editable_paginate"> {# <div class="dataTables_paginate paging_simple_numbers" id="editable_paginate">#}
<ul class="pagination" style="margin-top: 0; float: right"> {# <ul class="pagination" style="margin-top: 0; float: right">#}
{% if contacts2.has_previous %} {# {% if contacts2.has_previous %}#}
<li class="paginate_button previous" aria-controls="editable" tabindex="0" id="editable_previous"> {# <li class="paginate_button previous" aria-controls="editable" tabindex="0" id="editable_previous">#}
<a href="?page={{ contacts2.previous_page_number }}">Previous</a> {# <a href="?page={{ contacts2.previous_page_number }}">Previous</a>#}
</li> {# </li>#}
{% else %} {# {% else %}#}
<li class="paginate_button previous disabled" aria-controls="editable" tabindex="0" id="editable_previous"> {# <li class="paginate_button previous disabled" aria-controls="editable" tabindex="0" id="editable_previous">#}
<a href="#">Previous</a> {# <a href="#">Previous</a>#}
</li> {# </li>#}
{% endif %} {# {% endif %}#}
{% for page in p2.page_range %} {# {% for page in page_range2 %}#}
{% ifequal offset1 page %} {# {% ifequal current_page page %}#}
<li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li> {# <li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>#}
{% else %} {# {% else %}#}
<li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li> {# <li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>#}
{% endifequal %} {# {% endifequal %}#}
{% endfor %} {# {% endfor %}#}
{% if contacts2.has_next %} {# {% if contacts2.has_next %}#}
<li class="paginate_button next" aria-controls="editable" tabindex="0" id="editable_next"> {# <li class="paginate_button next" aria-controls="editable" tabindex="0" id="editable_next">#}
<a href="?page={{ contacts2.next_page_number }}">Next</a> {# <a href="?page={{ contacts2.next_page_number }}">Next</a>#}
</li> {# </li>#}
{% else %} {# {% else %}#}
<li class="paginate_button next disabled" aria-controls="editable" tabindex="0" id="editable_next"> {# <li class="paginate_button next disabled" aria-controls="editable" tabindex="0" id="editable_next">#}
<a href="#">Next</a> {# <a href="#">Next</a>#}
</li> {# </li>#}
{% endif %} {# {% endif %}#}
</ul> {# </ul>#}
</div> {# </div>#}
</div> {# </div>#}
</div> {# </div>#}
</div> </div>
</div> </div>

View File

@ -0,0 +1,240 @@
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-lg-10">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5> 鐢ㄦ埛缁勬巿鏉 <small> show host perm info.</small> </h5>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">鏈惎鐢 1</a>
</li>
<li><a href="#">鏈惎鐢 2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="panel blank-panel">
<div class="panel-heading">
<div class="panel-options">
<ul class="nav nav-tabs">
<li id="tab1" class="active"><a data-toggle="tab" href="/perm_list/">鎺堟潈鏌ョ湅</a></li>
<li id="tab2" class=""><a data-toggle="tab" href="/perm_user_detail/">鐢ㄦ埛鎺堟潈璇︽儏</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>
</div>
</div>
<div class="panel-body">
<div class="tab-content">
<div id="tab-1" class="tab-pane active">
<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_edit">
{% for perm in contacts.object_list %}
<tr class="gradeX">
<td class="text-center"> {{ perm.name }} </td>
<td class="text-center">
{% for user_group in perm.user_group.all %}
{{ user_group.name }}
{% endfor %}
</td>
<td class="text-center">
{% for asset_group in perm.asset_group.all %}
{{ asset_group.name }}
{% endfor %}
</td>
<td class="text-center"> {{ perm.comment }} </td>
<td class="text-center">
<a title="[ {{ group.name }} 鎺堟潈璇︽儏 ]" href="../perm_detail/?id={{ perm.id }}" class=" btn btn-xs btn-primary">璇︽儏</a>
<a href="../perm_edit/?id={{ perm.id }}" class="btn btn-xs btn-info">缂栬緫</a>
<a href="../perm_del/?id={{ perm.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 page_range %}
{% ifequal current_page 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>
</div>
<div id="tab-2" class="tab-pane">
{# <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="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 page_range2 %}#}
{# {% ifequal current_page 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>#}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$(".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>
{% endblock %}

View File

@ -89,8 +89,8 @@
<a href="#">Previous</a> <a href="#">Previous</a>
</li> </li>
{% endif %} {% endif %}
{% for page in p.page_range %} {% for page in page_range %}
{% ifequal offset1 page %} {% ifequal current_page page %}
<li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li> <li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>
{% else %} {% else %}
<li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li> <li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="绗瑊{ page }}椤">{{ page }}</a></li>