Skip to content

Commit

Permalink
用户详情
Browse files Browse the repository at this point in the history
  • Loading branch information
ibuler committed Dec 5, 2015
1 parent 532646a commit 35c818f
Show file tree
Hide file tree
Showing 8 changed files with 114 additions and 77 deletions.
9 changes: 7 additions & 2 deletions jasset/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,9 @@ def group_list(request):
header_title, path1, path2 = u'查看资产组', u'资产管理', u'查看资产组'
keyword = request.GET.get('keyword', '')
asset_group_list = AssetGroup.objects.all()

group_id = request.GET.get('id')
if group_id:
asset_group_list = asset_group_list.filter(id=group_id)
if keyword:
asset_group_list = asset_group_list.filter(Q(name__contains=keyword) | Q(comment__contains=keyword))

Expand Down Expand Up @@ -261,7 +263,7 @@ def asset_list(request):
asset_group_all = AssetGroup.objects.all()
asset_types = ASSET_TYPE
asset_status = ASSET_STATUS

asset_id = request.GET.get('id')
idc_name = request.GET.get('idc', '')
group_name = request.GET.get('group', '')
asset_type = request.GET.get('asset_type', '')
Expand Down Expand Up @@ -294,6 +296,9 @@ def asset_list(request):
if status:
asset_find = asset_find.filter(status__contains=status)

if asset_id:
asset_find = asset_find.filter(id=asset_id)

if keyword:
asset_find = asset_find.filter(
Q(hostname__contains=keyword) |
Expand Down
9 changes: 6 additions & 3 deletions jperm/perm_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,16 @@ def get_group_user_perm(ob):
asset_groups = rule.asset_group.all()
assets = rule.asset.all()
perm_roles = rule.role.all()
group_assets = []
for asset_group in asset_groups:
group_assets.extend(asset_group.asset_set.all())
# 获取一个规则授权的角色和对应主机
for role in perm_roles:
if perm_role.get('role'):
perm_role[role]['asset'] = perm_role[role].get('asset', set()).union(set(assets))
if perm_role.get(role):
perm_role[role]['asset'] = perm_role[role].get('asset', set()).union(set(assets).union(set(group_assets)))
perm_role[role]['asset_group'] = perm_role[role].get('asset_group', set()).union(set(asset_groups))
else:
perm_role[role] = {'asset': set(assets), 'asset_group': set(asset_groups)}
perm_role[role] = {'asset': set(assets).union(set(group_assets)), 'asset_group': set(asset_groups)}

# 获取一个规则用户授权的资产
for asset in assets:
Expand Down
11 changes: 8 additions & 3 deletions jperm/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,14 @@ def perm_rule_list(request):
"""
# 渲染数据
header_title, path1, path2 = "授权规则", "规则管理", "查看规则"

# 获取所有规则
rules_list = PermRule.objects.all()

rule_id = request.GET.get('id')
# TODO: 搜索和分页
keyword = request.GET.get('search', '')
if rule_id:
rules_list = rules_list.filter(id=rule_id)

if keyword:
rules_list = rules_list.filter(Q(name=keyword))

Expand Down Expand Up @@ -226,12 +228,15 @@ def perm_role_list(request):

# 获取所有系统角色
roles_list = PermRole.objects.all()

role_id = request.GET.get('id')
# TODO: 搜索和分页
keyword = request.GET.get('search', '')
if keyword:
roles_list = roles_list.filter(Q(name=keyword))

if role_id:
roles_list = roles_list.filter(id=role_id)

roles_list, p, roles, page_range, current_page, show_first, show_end = pages(roles_list, request)

return my_render('jperm/perm_role_list.html', locals(), request)
Expand Down
12 changes: 11 additions & 1 deletion jumpserver/templatetags/mytags.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from django import template
from jperm.models import PermPush
from jumpserver.api import *
from jasset.models import AssetAlias
from jperm.perm_api import get_group_user_perm

register = template.Library()

Expand Down Expand Up @@ -294,3 +294,13 @@ def get_disk_info(disk_info):
except Exception:
disk_size = ''
return disk_size


@register.filter(name='user_perm_asset_num')
def user_perm_asset_num(user_id):
user = get_object(User, id=user_id)
if user:
user_perm_info = get_group_user_perm(user)
return len(user_perm_info.get('asset').keys())
else:
return 0
43 changes: 13 additions & 30 deletions juser/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,24 +231,20 @@ def user_list(request):
@require_role(role='user')
def user_detail(request):
header_title, path1, path2 = '用户详情', '用户管理', '用户详情'
# if request.session.get('role_id') == 0:
# user_id = request.user.id
# else:
# user_id = request.GET.get('id', '')
# if request.session.get('role_id') == 1:
# user, dept = get_session_user_dept(request)
# if not validate(request, user=[user_id]):
# return HttpResponseRedirect('/')
user_id = request.GET.get('id', '')
if not user_id:
if request.session.get('role_id') == 0:
user_id = request.user.id
else:
user_id = request.GET.get('id', '')

user = get_object(User, id=user_id)
if not user:
return HttpResponseRedirect('/juser/user_list/')
user = User.objects.get(id=user_id)
# if user:
# pass
# asset_group_permed = user.get_asset_group()
# logs_last = Log.objects.filter(user=user.name).order_by('-start_time')[0:10]
# logs_all = Log.objects.filter(user=user.name).order_by('-start_time')
# logs_num = len(logs_all)

user_perm_info = get_group_user_perm(user)
role_assets = user_perm_info.get('role')
user_log_ten = Log.objects.filter(user=user.username).order_by('id')[0:10]
user_log_last = Log.objects.filter(user=user.username).order_by('id')[0:50]
user_log_last_num = len(user_log_last)

return my_render('juser/user_detail.html', locals(), request)

Expand Down Expand Up @@ -406,11 +402,6 @@ def user_edit(request):
return my_render('juser/user_edit.html', locals(), request)


# @require_role(role='admin')
def user_edit_adm(request):
pass


def profile(request):
a = request.user.id
a = request.user.groups
Expand Down Expand Up @@ -489,11 +480,3 @@ def down_key(request):
return response
return HttpResponse('No Key File. Contact Admin.')


@require_role(role='user')
def RunCommand(request):
if request.method == 'GET':
GUP = get_group_user_perm(request.user)
print GUP
assets = GUP.get('asset')
return render_to_response('juser/run_command.html', locals(), context_instance=RequestContext(request))
3 changes: 2 additions & 1 deletion templates/jasset/asset_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ <h5> 主机详细信息列表</h5>
var url='/jperm/role/get/?id=' + $(this).attr('value');
var href = $(this).attr('href');
var new_url = '/jlog/web_terminal/?id=' + $(this).attr('value') + '&role=';
var hostname = $(this).closest('tr').find('.hostname')[0].innerHTML;
var hostname = $(this).closest('tr').find('.hostname a')[0].innerHTML;
$.ajax({
type: 'GET',
url: url,
Expand All @@ -247,6 +247,7 @@ <h5> 主机详细信息列表</h5>
$.each(dataArray, function(index, value){
aUrl += '<a onclick="windowOpen(this); return false" class="btn btn-xs btn-primary newa" href=' + new_url + value + ' value=' + hostname + '>' + value + '</a> '
});
console.log(aUrl);
layer.alert(aUrl, {
skin: 'layui-layer-molv',
title: '多个角色,请选择一个连接',
Expand Down
97 changes: 63 additions & 34 deletions templates/juser/user_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,36 @@
</table>
</td>
</tr>
<tr>
<td class="text-navy">授权主机数量</td>
<td>
{{ user_perm_info.asset.keys | length }}
</td>
</tr>
<tr>
<td class="text-navy">授权主机组</td>
<td>
<table class="table">
{% for group in user_perm_info.asset_group.keys%}
<tr>
<td><a href="/jasset/group_list/?id={{ group.id }}">{{ group.name }}</a></td>
</tr>
{% endfor %}
</table>
</td>
</tr>
<tr>
<td class="text-navy">授权规则</td>
<td>
<table class="table">
{% for rule in user_perm_info.rule%}
<tr>
<td><a href="/jperm/role/?id={{ rule.id }}">{{ rule.name }}</a></td>
</tr>
{% endfor %}
</table>
</td>
</tr>
</table>
</div>
</div>
Expand All @@ -94,10 +124,6 @@ <h5>授权主机/组</h5>
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">Config option 1</a>
</li>
<li><a href="#">Config option 2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
Expand All @@ -106,33 +132,35 @@ <h5>授权主机/组</h5>
</div>
<div class="ibox-content ibox-heading">
<h3>用户的所有授权主机</h3>
<small><i class="fa fa-map-marker"></i> 这里包含了用户所有的主机组和组下的主机.</small>
<small><i class="fa fa-map-marker"></i> 这里包含了用户授权角色和角色下的主机.</small>
</div>
<div class="ibox-content inspinia-timeline">
{# {% for group in user|get_user_asset_group %}#}
{# <div class="timeline-item">#}
{# <div class="row">#}
{# <div class="col-xs-3 date">#}
{# <i class="fa fa-repeat"></i>#}
{# <b><a href="/jperm/perm_list/?uid={{ user.id }}&agid={{ group.id }}">{{ group.name }}</a></b>#}
{# <br>#}
{# <small class="text-navy">共: {{ group | group_asset_list_count }}台</small>#}
{# </div>#}
{# <div class="col-xs-7 content no-top-border">#}
{# <p class="m-b-xs"><strong>{{ group.comment }}</strong></p>#}
{# <p>#}
{# {% for asset in group|group_asset_list %}#}
{# {{ asset.ip }}<br>#}
{# {% endfor %}#}
{# </p>#}
{# <p></p>#}
{# </div>#}
{# </div>#}
{# </div>#}
{# {% endfor %}#}
{# {% if not user|get_user_asset_group %}#}
{# (无)#}
{# {% endif %}#}
{% for role, assets in role_assets.items %}
<div class="timeline-item">
<div class="row">
<div class="col-xs-3 date">
<i class="fa fa-info"></i>
<b>
<a href="/jperm/role/&id={{ role.id }}">{{ role.name }}</a></b>
<br>
<small class="text-navy">共: {{ assets.asset | length }}台</small>
</div>
<div class="col-xs-7 content no-top-border">
<p class="m-b-xs">
<strong>{{ role.comment }}</strong></p>
<p>
{% for asset in assets.asset %}
<a href="/jasset/asset_list/?id={{ asset.id }}">{{ asset.hostname }}</a><br>
{% endfor %}
</p>
<p></p>
</div>
</div>
</div>
{% endfor %}
{% ifequal '{{ asset.asset | length }}' 0 %}
(无)
{% endifequal %}
</div>
</div>
</div>
Expand All @@ -147,8 +175,9 @@ <h5>登录记录</h5>
</div>
<div class="ibox-content">
<div id="last">

<div class="feed-activity-list" >
{% for log in logs_last %}
{% for log in user_log_ten %}
<div class="feed-element">
<a href="profile.html" class="pull-left">
<img alt="image" class="img-circle" src="/static/img/{{ session_role_id | to_avatar }}.png">
Expand All @@ -161,18 +190,18 @@ <h5>登录记录</h5>
</div>
</div>
{% endfor %}
{% if not logs_last %}
{% if not user_log_ten %}
(暂无)
{% endif %}
</div>
{% if logs_num > 10 %}
<button id="show" class="btn btn-primary btn-block m-t"><i class="fa fa-arrow-down"></i> Show All</button>
{% if user_log_last_num > 10 %}
<button id="show" class="btn btn-primary btn-block m-t"><i class="fa fa-arrow-down"></i> Show More</button>
{% endif %}
</div>

<div id="all" style="display: none">
<div class="feed-activity-list" >
{% for log in logs_all %}
{% for log in user_log_last %}
<div class="feed-element">
<a href="profile.html" class="pull-left">
<img alt="image" class="img-circle" src="/static/img/{{ session_role_id | to_avatar }}.png">
Expand Down
7 changes: 4 additions & 3 deletions templates/juser/user_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ <h5> 查看用户 </h5>
<th class="text-center">用户名</th>
<th class="text-center">姓名</th>
<th class="text-center">小组</th>
<th class="text-center">角色</th>
<th class="text-center">权限</th>
<th class="text-center">主机数量</th>
<th class="text-center">激活</th>
<th class="text-center">下载密钥</th>
<th class="text-center">操作</th>
Expand All @@ -59,10 +60,11 @@ <h5> 查看用户 </h5>
<td class="text-center">
<input type="checkbox" name="checked" value="{{ user.id }}">
</td>
<td class="text-center"> {{ user.username }} </td>
<td class="text-center"><a href="../user_detail/?id={{ user.id }}">{{ user.username }}</a></td>
<td class="text-center"> {{ user.name }} </td>
<td class="text-center" title="{% for user_group in user.group.all %} {{ user_group.name }} {% endfor %}"> {{ user.group.all | groups2str }} </td>
<td class="text-center"> {{ user.id | get_role }}</td>
<th class="text-center">{{ user.id | user_perm_asset_num }}</th>
<td class="text-center">{{ user.is_active | bool2str }}</td>
<td class="text-center">
{% if user.username|key_exist %}
Expand All @@ -72,7 +74,6 @@ <h5> 查看用户 </h5>
{% endif %}
</td>
<td class="text-center">
<a href="../user_detail/?id={{ user.id }}" class="btn btn-xs btn-primary">详情</a>
<a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">编辑</a>
<a value="{{ user.uuid }}" class="btn btn-xs btn-warning email">Email</a>
<a value="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger del {% if user.username == 'admin' %} disabled {% endif %}">删除</a>
Expand Down

0 comments on commit 35c818f

Please sign in to comment.