From 1eff4ab4ffb4b11b7b742a9afa1a8644340f0bf0 Mon Sep 17 00:00:00 2001
From: yumaojun <719118794@qq.com>
Date: Fri, 13 Nov 2015 17:17:22 +0800
Subject: [PATCH] add edit, detail page
---
jperm/urls.py | 6 +-
jperm/views.py | 57 +++-
jumpserver/templatetags/mytags.py | 40 +++
templates/jperm/perm_rule_detail.html | 156 +++++++--
templates/jperm/perm_rule_edit.html | 457 +++++++++++---------------
templates/jperm/perm_rules.html | 17 +-
6 files changed, 428 insertions(+), 305 deletions(-)
diff --git a/jperm/urls.py b/jperm/urls.py
index 51b98b1ba..ea7c2def7 100644
--- a/jperm/urls.py
+++ b/jperm/urls.py
@@ -3,8 +3,10 @@ from jperm.views import *
urlpatterns = patterns('jperm.views',
(r'^user/$', perm_rules),
- (r'^perm_user_edit/$', perm_rule_add),
- (r'^perm_user_detail/$', perm_rule_detail),
+ (r'^perm_rule_add/$', perm_rule_add),
+ (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'^perm_group_edit/$', perm_group_edit),
(r'^log/$', log),
diff --git a/jperm/views.py b/jperm/views.py
index 700ed444f..22d36dddf 100644
--- a/jperm/views.py
+++ b/jperm/views.py
@@ -58,10 +58,18 @@ def perm_rule_detail(request):
2. include 部分:{% include 'nav_cat_bar.html' %}
rander_nav 为渲染数据
"""
- data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "用户详情"}
+ data_nav = {"header_title": "授权规则", "path1": "授权管理", "path2": "规则详情"}
- # 待实现
- render_data = updates_dict(data_nav)
+ # 根据rule_id 取得rule对象
+ 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)
@@ -73,7 +81,7 @@ def perm_rule_add(request):
:param request:
:return:
"""
- data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "添加授权规则"}
+ data_nav = {"header_title": "授权规则", "path1": "授权管理", "path2": "添加规则"}
if request.method == 'GET':
# 获取所有 用户,用户组,资产,资产组,用户角色, 用于添加授权规则
@@ -150,23 +158,52 @@ def perm_rule_add(request):
else:
return HttpResponse("add rule failed")
+
@require_role('admin')
-def perm_rule_list(request):
+def perm_rule_edit(request):
"""
list rules
:param request:
: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对象
- 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")
diff --git a/jumpserver/templatetags/mytags.py b/jumpserver/templatetags/mytags.py
index ae92b4592..52da56a05 100644
--- a/jumpserver/templatetags/mytags.py
+++ b/jumpserver/templatetags/mytags.py
@@ -127,6 +127,13 @@ def result2bool(result=''):
@register.filter(name='rule_member_count')
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)
counts = member.all().count()
return str(counts)
@@ -134,11 +141,44 @@ def rule_member_count(instance, member):
@register.filter(name='rule_member_name')
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)
names = member.all()
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)
diff --git a/templates/jperm/perm_rule_detail.html b/templates/jperm/perm_rule_detail.html
index 8fec3ba31..e516a993b 100644
--- a/templates/jperm/perm_rule_detail.html
+++ b/templates/jperm/perm_rule_detail.html
@@ -1,30 +1,140 @@
{% extends 'base.html' %}
{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
还未实现...
-
-{% endblock %}
+
+
+
+
授权用户/用户组
+
+
+
+
+
+
+ 用户 |
+ 用户组 |
+
+
+
+ {% for user in users %}
+
+ {{ user.name }} |
+ {{ user | user_which_groups:"group" }} |
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
授权主机/主机组
+
+
+
+
+
+
+ 主机 |
+ 主机组 |
+
+
+
+ {% for asset in assets %}
+
+ {{ asset.ip }} |
+ {{ asset | asset_which_groups:"group" }} |
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_rule_edit.html b/templates/jperm/perm_rule_edit.html
index 591d1896a..21f639066 100644
--- a/templates/jperm/perm_rule_edit.html
+++ b/templates/jperm/perm_rule_edit.html
@@ -1,284 +1,209 @@
{% extends 'base.html' %}
+{% block self_head_css_js %}
+
+
+
+{% endblock %}
{% load mytags %}
{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-