From 8723d673d7475992044c661a912dd361e0540bf0 Mon Sep 17 00:00:00 2001 From: yumaojun <719118794@qq.com> Date: Sun, 6 Dec 2015 18:07:57 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E8=AE=A1=E7=AE=97=E8=AF=A5=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9C=89=E5=93=AA=E4=BA=9B=E4=B8=BB=E6=9C=BA=E6=B2=A1?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=97=B6=EF=BC=8C=E4=BD=BF=E7=94=A8=E4=BA=A4?= =?UTF-8?q?=E9=9B=86=E8=AE=A1=E7=AE=97=EF=BC=88=E5=8E=9F=E6=9D=A5=E6=98=AF?= =?UTF-8?q?=E5=B7=AE=E9=9B=86=EF=BC=89=202.=20=E4=BF=AE=E6=94=B9rule=20=20?= =?UTF-8?q?=20detail=E9=A1=B5=E9=9D=A2=E3=80=80=E4=B8=8D=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=EF=BC=8C=E7=BB=8F=E8=BF=94=E5=9B=9Erule=20=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E4=BF=A1=E6=81=AF=203.=20=E4=BF=AE=E6=94=B9role=20=20?= =?UTF-8?q?=20detail=E9=A1=B5=E9=9D=A2=E3=80=80=E4=B8=8D=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=EF=BC=8C=E7=BB=8F=E8=BF=94=E5=9B=9Erule=20=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E4=BF=A1=E6=81=AF=204.=20=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=20=E6=8E=A8=E9=80=81=E4=B8=BB=E6=9C=BA=E4=B8=8A=E7=9A=84?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=9B=9E=E6=94=B6=E5=8A=9F=E8=83=BD=205.=20T?= =?UTF-8?q?ODO:=20=20=E9=A1=B5=E9=9D=A2=E7=9A=84=E7=BE=8E=E8=A7=82?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=EF=BC=8C=E4=B8=8E=E3=80=80=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E3=80=80=E7=94=A8=E6=88=B7=E7=9A=84=E6=89=B9=E9=87=8F=E5=9B=9E?= =?UTF-8?q?=E6=94=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jperm/perm_api.py | 18 +++++------------- jperm/views.py | 21 +++++++++++++++++++-- templates/jperm/perm_role_detail.html | 2 +- templates/jperm/perm_rule_detail.html | 17 +++++++++++------ 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/jperm/perm_api.py b/jperm/perm_api.py index 080f1cb39..592cdb22a 100644 --- a/jperm/perm_api.py +++ b/jperm/perm_api.py @@ -224,9 +224,7 @@ def get_role_info(role_id, type="all"): users_obj = [] assets_obj = [] user_groups_obj = [] - group_users_obj = [] asset_groups_obj = [] - group_assets_obj = [] for rule in rules_obj: for user in rule.user.all(): users_obj.append(user) @@ -234,31 +232,25 @@ def get_role_info(role_id, type="all"): assets_obj.append(asset) for user_group in rule.user_group.all(): user_groups_obj.append(user_group) - for user in user_group.user_set.all(): - group_users_obj.append(user) for asset_group in rule.asset_group.all(): asset_groups_obj.append(asset_group) - for asset in asset_group.asset_set.all(): - group_assets_obj.append(asset) - - calc_users = set(users_obj) | set(group_users_obj) - calc_assets = set(assets_obj) | set(group_assets_obj) if type == "all": return {"rules": rules_obj, - "users": list(calc_users), + "users": users_obj, "user_groups": user_groups_obj, - "assets": list(calc_assets), + "assets": assets_obj, "asset_groups": asset_groups_obj, } + elif type == "rule": return rules_obj elif type == "user": - return calc_users + return users_obj elif type == "user_group": return user_groups_obj elif type == "asset": - return calc_assets + return assets_obj elif type == "asset_group": return asset_groups_obj else: diff --git a/jperm/views.py b/jperm/views.py index 12ca395ba..bd6193da1 100644 --- a/jperm/views.py +++ b/jperm/views.py @@ -50,14 +50,19 @@ def perm_rule_detail(request): rule_id = request.GET.get("id") rule_obj = PermRule.objects.get(id=rule_id) user_obj = rule_obj.user.all() + usergroup_obj = rule_obj.user_group.all() asset_obj = rule_obj.asset.all() + assetgroup_obj = rule_obj.asset_group.all() + roles_name = [role.name for role in rule_obj.role.all()] # 渲染数据 roles_name = ','.join(roles_name) rule = rule_obj users = user_obj + user_groups = usergroup_obj assets = asset_obj + asset_groups = assetgroup_obj return my_render('jperm/perm_rule_detail.html', locals(), request) @@ -108,7 +113,8 @@ def perm_rule_add(request): need_push_asset = set() for role in roles_obj: asset_no_push = get_role_push_host(role=role)[1] - need_push_asset.update(set(calc_assets) - set(asset_no_push)) + print set(calc_assets), set(asset_no_push) + need_push_asset.update(set(calc_assets) & set(asset_no_push)) if need_push_asset: raise ServerError(u'没有推送角色 %s 的主机 %s' % (role.name, ','.join([asset.hostname for asset in need_push_asset]))) @@ -256,7 +262,7 @@ def perm_role_add(request): try: if get_object(PermRole, name=name): - raise ServerError('已经存在该用户 %s' % name) + raise ServerError(u'已经存在该用户 %s' % name) default = get_object(Setting, name='default') if password: @@ -579,10 +585,21 @@ def perm_sudo_delete(request): def perm_role_recycle(request): role_id = request.GET.get('role_id') asset_ids = request.GET.get('asset_id').split(',') + success = request.GET.get("success") + print request.GET + + if success == "True": + assets = [get_object(Asset, id=asset_id) for asset_id in asset_ids] + recycle_resource = gen_resource(assets) + task = Tasks(recycle_resource) + msg = task.del_user(get_object(PermRole, id=role_id).name) + print msg + for asset_id in asset_ids: asset = get_object(Asset, id=asset_id) role = get_object(PermRole, id=role_id) PermPush.objects.filter(asset=asset, role=role).delete() + return HttpResponse('删除成功') diff --git a/templates/jperm/perm_role_detail.html b/templates/jperm/perm_role_detail.html index 757ec08f2..9d93dde61 100644 --- a/templates/jperm/perm_role_detail.html +++ b/templates/jperm/perm_role_detail.html @@ -198,7 +198,7 @@ {% else %} {{ info.success | yesno:"成功,失败,未知" }} {% endif %} - + {% endfor %} diff --git a/templates/jperm/perm_rule_detail.html b/templates/jperm/perm_rule_detail.html index c2e362b75..8f1b7167b 100644 --- a/templates/jperm/perm_rule_detail.html +++ b/templates/jperm/perm_rule_detail.html @@ -93,12 +93,15 @@ - {% for user in users %} + {% for user in users %} {{ user.name }} - {{ user | user_which_groups:"group" }} + {% endfor %} + {% for group in user_groups %} + {{ group.name }} + {% endfor %} - {% endfor %} + @@ -139,12 +142,14 @@ - {% for asset in assets %} + {% for asset in assets %} {{ asset.ip }} - {{ asset | asset_which_groups:"group" }} + {% endfor %} + {% for group in asset_groups %} + {{ group.name }} + {% endfor %} - {% endfor %}