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 %}