Commit 1eff4ab4 authored by yumaojun's avatar yumaojun

add edit, detail page

parent 1aed3b4d
...@@ -3,8 +3,10 @@ from jperm.views import * ...@@ -3,8 +3,10 @@ from jperm.views import *
urlpatterns = patterns('jperm.views', urlpatterns = patterns('jperm.views',
(r'^user/$', perm_rules), (r'^user/$', perm_rules),
(r'^perm_user_edit/$', perm_rule_add), (r'^perm_rule_add/$', perm_rule_add),
(r'^perm_user_detail/$', perm_rule_detail), (r'^perm_rule_detail/$', perm_rule_detail),
(r'^perm_rule_edit/$', perm_rule_edit),
(r'^perm_rule_delete/$', perm_rule_delete),
(r'^group/$', perm_group_list), (r'^group/$', perm_group_list),
(r'^perm_group_edit/$', perm_group_edit), (r'^perm_group_edit/$', perm_group_edit),
(r'^log/$', log), (r'^log/$', log),
......
...@@ -58,10 +58,18 @@ def perm_rule_detail(request): ...@@ -58,10 +58,18 @@ def perm_rule_detail(request):
2. include 部分:{% include 'nav_cat_bar.html' %} 2. include 部分:{% include 'nav_cat_bar.html' %}
rander_nav 为渲染数据 rander_nav 为渲染数据
""" """
data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "用户详情"} data_nav = {"header_title": "授权规则", "path1": "授权管理", "path2": "规则详情"}
# 待实现 # 根据rule_id 取得rule对象
render_data = updates_dict(data_nav) rule_id = request.GET.get("id")
rule_obj = PermRule.objects.get(id=rule_id)
user_obj = rule_obj.user.all()
asset_obj = rule_obj.asset.all()
roles_name = [role.name for role in rule_obj.role.all()]
data_content = {"roles_name": ','.join(roles_name), "rule": rule_obj, "users": user_obj, "assets": asset_obj}
render_data = updates_dict(data_nav, data_content)
return my_render('jperm/perm_rule_detail.html', render_data, request) return my_render('jperm/perm_rule_detail.html', render_data, request)
...@@ -73,7 +81,7 @@ def perm_rule_add(request): ...@@ -73,7 +81,7 @@ def perm_rule_add(request):
:param request: :param request:
:return: :return:
""" """
data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "添加授权规则"} data_nav = {"header_title": "授权规则", "path1": "授权管理", "path2": "添加规则"}
if request.method == 'GET': if request.method == 'GET':
# 获取所有 用户,用户组,资产,资产组,用户角色, 用于添加授权规则 # 获取所有 用户,用户组,资产,资产组,用户角色, 用于添加授权规则
...@@ -150,23 +158,52 @@ def perm_rule_add(request): ...@@ -150,23 +158,52 @@ def perm_rule_add(request):
else: else:
return HttpResponse("add rule failed") return HttpResponse("add rule failed")
@require_role('admin') @require_role('admin')
def perm_rule_list(request): def perm_rule_edit(request):
""" """
list rules list rules
:param request: :param request:
:return: :return:
""" """
data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "查看授权规则"} data_nav = {"header_title": "授权规则", "path1": "授权管理", "path2": "编辑规则"}
# 根据rule_id 取得rule对象
rule_id = request.GET.get("id")
rule_obj = PermRule.objects.get(id=rule_id)
user_id = request.GET.get('id', '')
user = get_object(User, id=user_id)
if request.method == 'GET' and user: if request.method == 'GET' and rule_id:
# 获取所有的rule对象 # 获取所有的rule对象
rules = PermRule.obects.all() users = rule_obj.user.all()
user_groups = rule_obj.user_group.all()
assets = rule_obj.asset.all()
asset_groups = rule_obj.asset_group.all()
roles = rule_obj.role.all()
data_content = {"users": users, "user_groups": user_groups,
"assets": assets, "asset_groups": asset_groups,
"roles": roles}
render_data = updates_dict(data_nav, data_content)
return my_render('jperm/perm_rule_edit.html', render_data, request)
elif request.method == 'POST' and rule_id:
return HttpResponse("uncompleted")
@require_role('admin')
def perm_rule_delete(request):
"""
use to delete rule
:param request:
:return:
"""
# 根据rule_id 取得rule对象
rule_id = request.GET.get("id")
rule_obj = PermRule.objects.get(id=rule_id)
if request.method == 'POST' and rule_id:
return HttpResponse("uncompleted")
......
...@@ -127,6 +127,13 @@ def result2bool(result=''): ...@@ -127,6 +127,13 @@ def result2bool(result=''):
@register.filter(name='rule_member_count') @register.filter(name='rule_member_count')
def rule_member_count(instance, member): def rule_member_count(instance, member):
"""
instance is a rule object,
use to get the number of the members
:param instance:
:param member:
:return:
"""
member = getattr(instance, member) member = getattr(instance, member)
counts = member.all().count() counts = member.all().count()
return str(counts) return str(counts)
...@@ -134,11 +141,44 @@ def rule_member_count(instance, member): ...@@ -134,11 +141,44 @@ def rule_member_count(instance, member):
@register.filter(name='rule_member_name') @register.filter(name='rule_member_name')
def rule_member_name(instance, member): def rule_member_name(instance, member):
"""
instance is a rule object,
use to get the name of the members
:param instance:
:param member:
:return:
"""
member = getattr(instance, member) member = getattr(instance, member)
names = member.all() names = member.all()
return names return names
@register.filter(name='user_which_groups')
def user_which_group(user, member):
"""
instance is a user object,
use to get the group of the user
:param instance:
:param member:
:return:
"""
member = getattr(user, member)
names = [members.name for members in member.all()]
return ','.join(names)
@register.filter(name='asset_which_groups')
def asset_which_group(asset, member):
"""
instance is a user object,
use to get the group of the user
:param instance:
:param member:
:return:
"""
member = getattr(asset, member)
names = [members.name for members in member.all()]
return ','.join(names)
{% extends 'base.html' %} {% extends 'base.html' %}
{% load mytags %} {% load mytags %}
{% block content %} {% block content %}
{% include 'nav_cat_bar.html' %} {% include 'nav_cat_bar.html' %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row"> <div class="row">
<div class="col-lg-10"> <div class="col-lg-4">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5> 还未实现...</h5> <span class="label label-primary"><b>{{ rule.name }}</b></span>
<div class="ibox-tools"> <div class="ibox-tools">
<a class="collapse-link"> <a class="collapse-link">
<i class="fa fa-chevron-up"></i> <i class="fa fa-chevron-up"></i>
</a> </a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i> <i class="fa fa-wrench"></i>
</a> </a>
<a class="close-link"> <ul class="dropdown-menu dropdown-user">
<i class="fa fa-times"></i> <li><a href="#"></a>
</a> </li>
<li><a href="#"></a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div>
<div class="text-left">
<table class="table">
<tr>
<td class="text-navy">ID</td>
<td>{{ rule.id }}</td>
</tr>
<tr>
<td class="text-navy">名称</td>
<td>{{ rule.name }}</td>
</tr>
<tr>
<td class="text-navy">时间</td>
<td>{{ rule.date_added }}</td>
</tr>
<tr>
<td class="text-navy">角色</td>
<td>{{ roles_name }}</td>
</tr>
<tr>
<td class="text-navy">激活</td>
<td></td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>授权用户/用户组</h5>
<div class="ibox-content">
<div>
<div class="text-left">
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">用户</th>
<th class="text-center">用户组</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr class="gradeX">
<td class="text-center"> {{ user.name }} </td>
<td class="text-center"> {{ user | user_which_groups:"group" }} </td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="ibox-content inspinia-timeline">
</div>
</div>
</div>
<div class="col-lg-4">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>授权主机/主机组</h5>
<div class="ibox-content">
<div>
<div class="text-left">
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">主机</th>
<th class="text-center">主机组</th>
</tr>
</thead>
<tbody>
{% for asset in assets %}
<tr class="gradeX">
<td class="text-center"> {{ asset.ip }} </td>
<td class="text-center"> {{ asset | asset_which_groups:"group" }} </td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="ibox-content inspinia-timeline">
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</div>
{% endblock %} <script>
$(document).ready(function(){
$('#show').click(function(){
$('#last').css('display', 'none');
$('#all').css('display', 'block');
})
})
</script>
{% endblock %}
\ No newline at end of file
This diff is collapsed.
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<div class="ibox-content"> <div class="ibox-content">
<div class=""> <div class="">
<a target="_blank" href="/jperm/perm_user_edit/" class="btn btn-sm btn-primary "> 添加规则 </a> <a target="_blank" href="/jperm/perm_rule_add/" class="btn btn-sm btn-primary "> 添加规则 </a>
<a id="del_btn" class="btn btn-sm btn-danger "> 删除所选 </a> <a id="del_btn" class="btn btn-sm btn-danger "> 删除所选 </a>
<form id="search_form" method="get" action="" class="pull-right mail-search"> <form id="search_form" method="get" action="" class="pull-right mail-search">
<div class="input-group"> <div class="input-group">
...@@ -70,9 +70,9 @@ ...@@ -70,9 +70,9 @@
<a href="/jasset/group_list/?gid={{ user.id }}">{{ rule | rule_member_count:"role" }}</a> <a href="/jasset/group_list/?gid={{ user.id }}">{{ rule | rule_member_count:"role" }}</a>
</td> </td>
<td class="text-center"> <td class="text-center">
<a href="../perm_user_detail/?id={{ user.id }}" class="btn btn-xs btn-primary">详情</a> <a href="/jperm/perm_rule_detail/?id={{ rule.id }}" class="btn btn-xs btn-primary">详情</a>
<a href="../perm_user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">编辑</a> <a href="/jperm/perm_rule_edit/?id={{ rule.id }}" class="btn btn-xs btn-info">编辑</a>
<a href="../perm_user_edit/?id={{ user.id }}" class="btn btn-xs btn-danger">删除</a> <a onclick="remove_rule({{ rule.id }});" class="btn btn-xs btn-danger">删除</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
...@@ -93,3 +93,12 @@ ...@@ -93,3 +93,12 @@
</div> </div>
{% endblock %} {% endblock %}
<script type="text/javascript">
function remove_rule(rule_id){
}
</script>
\ No newline at end of file
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