mirror of https://github.com/jumpserver/jumpserver
1. 计算该角色有哪些主机没推送时,使用交集计算(原来是差集)
2. 修改rule detail页面 不计算,经返回rule 记录的信息 3. 修改role detail页面 不计算,经返回rule 记录的信息 4. 添加了 推送主机上的用户回收功能 5. TODO: 页面的美观展示,与 实现 用户的批量回收。pull/26/head
parent
4b36fc540d
commit
8723d673d7
|
@ -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:
|
||||
|
|
|
@ -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('删除成功')
|
||||
|
||||
|
||||
|
|
|
@ -198,7 +198,7 @@
|
|||
{% else %}
|
||||
<td class="text-center" style="color: #ec4758;cursor: help" title="{{ info.result }}" >{{ info.success | yesno:"成功,失败,未知" }} </td>
|
||||
{% endif %}
|
||||
<td class="text-center" ><a class="fa fa-times del" href="/jperm/role/recycle/?role_id={{ role.id }}&asset_id={{ asset.id }}" style="color: #ec4758;"></a></td>
|
||||
<td class="text-center" ><a class="fa fa-times del" href="/jperm/role/recycle/?role_id={{ role.id }}&asset_id={{ asset.id }}&success={{ info.success }}" style="color: #ec4758;"></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
|
|
@ -93,12 +93,15 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
<tr class="gradeX">
|
||||
{% for user in users %}
|
||||
<td class="text-center"> {{ user.name }} </td>
|
||||
<td class="text-center"> {{ user | user_which_groups:"group" }} </td>
|
||||
{% endfor %}
|
||||
{% for group in user_groups %}
|
||||
<td class="text-center"> {{ group.name }} </td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
@ -139,12 +142,14 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for asset in assets %}
|
||||
<tr class="gradeX">
|
||||
{% for asset in assets %}
|
||||
<td class="text-center"> {{ asset.ip }} </td>
|
||||
<td class="text-center"> {{ asset | asset_which_groups:"group" }} </td>
|
||||
{% endfor %}
|
||||
{% for group in asset_groups %}
|
||||
<td class="text-center"> {{ group.name }} </td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue