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' %} -
-
-
-
-
-
还未实现...
-
- - - - - - - - - + +{% block content %} + {% include 'nav_cat_bar.html' %} +
+ +
+
+
+
+ {{ rule.name }} +
+ + + + + + + + + + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
ID{{ rule.id }}
名称{{ rule.name }}
时间{{ rule.date_added }}
角色{{ roles_name }}
激活
+
+
-
-
-
-
-{% endblock %} +
+
+
+
授权用户/用户组
+
+
+
+ + + + + + + + + {% for user in users %} + + + + + {% endfor %} + +
用户用户组
{{ user.name }} {{ user | user_which_groups:"group" }}
+
+
+
+
+
+
+
+
+ +
+
+
+
授权主机/主机组
+
+
+
+ + + + + + + + + {% for asset in assets %} + + + + + {% endfor %} + +
主机主机组
{{ asset.ip }} {{ asset | asset_which_groups:"group" }}
+
+
+
+
+
+
+
+
+ +
+ + + + +{% 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' %} - -
-
-
-
-
-
未授权资源和资源组
- -
- -
-
-{# 添加用户 #} -