Commit 9bab7bf1 authored by guanghongwei's avatar guanghongwei

Merge branch 'guanghongwei' of gitcafe.com:ibuler/jumpserver into guanghongwei

Conflicts:
	jperm/views.py
	jumpserver/views.py
parents f0cd0641 56f8f5d0
...@@ -9,7 +9,8 @@ urlpatterns = patterns('jperm.views', ...@@ -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'),
......
...@@ -8,7 +8,7 @@ from jasset.models import Asset, BisGroup ...@@ -8,7 +8,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:
...@@ -40,19 +40,18 @@ def perm_list(request): ...@@ -40,19 +40,18 @@ 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(), context_instance=RequestContext(request))
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=''):
......
...@@ -52,6 +52,14 @@ class ServerError(Exception): ...@@ -52,6 +52,14 @@ 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'}
......
...@@ -21,7 +21,7 @@ from juser.models import UserGroup, User ...@@ -21,7 +21,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')
...@@ -266,12 +266,14 @@ def group_list(request): ...@@ -266,12 +266,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(), context_instance=RequestContext(request)) return render_to_response('juser/group_list.html', locals(), context_instance=RequestContext(request))
...@@ -334,12 +336,14 @@ def user_list(request): ...@@ -334,12 +336,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(), context_instance=RequestContext(request)) return render_to_response('juser/user_list.html', locals(), context_instance=RequestContext(request))
......
...@@ -33,8 +33,8 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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>
......
{% 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 %}
\ No newline at end of file
...@@ -89,8 +89,8 @@ ...@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment