mirror of https://github.com/jumpserver/jumpserver
用户详情和普通用户
parent
7e53228359
commit
bd0fd90e2d
|
@ -127,13 +127,13 @@ def test_add_log():
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
install()
|
#install()
|
||||||
test_add_dept()
|
#test_add_dept()
|
||||||
test_add_group()
|
#test_add_group()
|
||||||
test_add_user()
|
#test_add_user()
|
||||||
test_add_idc()
|
#test_add_idc()
|
||||||
test_add_asset_group()
|
#test_add_asset_group()
|
||||||
test_add_asset()
|
#test_add_asset()
|
||||||
test_add_log()
|
test_add_log()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ from binascii import b2a_hex, a2b_hex
|
||||||
import ldap
|
import ldap
|
||||||
from ldap import modlist
|
from ldap import modlist
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import datetime
|
||||||
from django.core.paginator import Paginator, EmptyPage, InvalidPage
|
from django.core.paginator import Paginator, EmptyPage, InvalidPage
|
||||||
from django.http import HttpResponse, Http404
|
from django.http import HttpResponse, Http404
|
||||||
from juser.models import User, UserGroup
|
from juser.models import User, UserGroup
|
||||||
|
|
|
@ -2,6 +2,7 @@ from juser.models import User
|
||||||
from jasset.models import Asset
|
from jasset.models import Asset
|
||||||
from jumpserver.api import *
|
from jumpserver.api import *
|
||||||
|
|
||||||
|
|
||||||
def name_proc(request):
|
def name_proc(request):
|
||||||
user_id = request.session.get('user_id')
|
user_id = request.session.get('user_id')
|
||||||
role_id = request.session.get('role_id')
|
role_id = request.session.get('role_id')
|
||||||
|
|
|
@ -108,6 +108,7 @@ TEMPLATE_DIRS = (
|
||||||
|
|
||||||
STATICFILES_DIRS = (
|
STATICFILES_DIRS = (
|
||||||
os.path.join(BASE_DIR, "static"),
|
os.path.join(BASE_DIR, "static"),
|
||||||
|
os.path.join(BASE_DIR, "keys"),
|
||||||
)
|
)
|
||||||
# Internationalization
|
# Internationalization
|
||||||
# https://docs.djangoproject.com/en/1.7/topics/i18n/
|
# https://docs.djangoproject.com/en/1.7/topics/i18n/
|
||||||
|
|
|
@ -56,7 +56,7 @@ def groups_str2(group_list):
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='group_str2_all')
|
@register.filter(name='group_str2_all')
|
||||||
def groups_str2(group_list):
|
def group_str2_all(group_list):
|
||||||
group_lis = []
|
group_lis = []
|
||||||
for i in group_list:
|
for i in group_list:
|
||||||
if str(i) != 'ALL':
|
if str(i) != 'ALL':
|
||||||
|
@ -106,6 +106,12 @@ def member_count(group_id):
|
||||||
return group.user_set.count()
|
return group.user_set.count()
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='group_user_count')
|
||||||
|
def group_user_count(group_id):
|
||||||
|
group = UserGroup.objects.get(id=group_id)
|
||||||
|
return group.user_set.count()
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='dept_user_num')
|
@register.filter(name='dept_user_num')
|
||||||
def dept_user_num(dept_id):
|
def dept_user_num(dept_id):
|
||||||
dept = DEPT.objects.filter(id=dept_id)
|
dept = DEPT.objects.filter(id=dept_id)
|
||||||
|
@ -217,3 +223,31 @@ def to_avatar(role_id='0'):
|
||||||
@register.filter(name='get_user_asset_group')
|
@register.filter(name='get_user_asset_group')
|
||||||
def get_user_asset_group(user):
|
def get_user_asset_group(user):
|
||||||
return user_perm_group_api(user)
|
return user_perm_group_api(user)
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='group_asset_list')
|
||||||
|
def group_asset_list(group):
|
||||||
|
return group.asset_set.all()
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='group_asset_list_count')
|
||||||
|
def group_asset_list_count(group):
|
||||||
|
return group.asset_set.all().count()
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='time_delta')
|
||||||
|
def time_delta(time_before):
|
||||||
|
delta = datetime.datetime.now() - time_before
|
||||||
|
days = delta.days
|
||||||
|
if days:
|
||||||
|
return "%s 澶╁墠" % days
|
||||||
|
else:
|
||||||
|
hours = delta.seconds/3600
|
||||||
|
if hours:
|
||||||
|
return "%s 灏忔椂鍓" % hours
|
||||||
|
else:
|
||||||
|
mins = delta.seconds/60
|
||||||
|
if mins:
|
||||||
|
return '%s 鍒嗛挓鍓' % mins
|
||||||
|
else:
|
||||||
|
return '%s 绉掑墠' % delta.seconds
|
||||||
|
|
|
@ -42,8 +42,15 @@ def get_data(data, items, option):
|
||||||
return dic
|
return dic
|
||||||
|
|
||||||
|
|
||||||
|
@require_login
|
||||||
|
def index_cu(request):
|
||||||
|
return render_to_response('index_cu.html', locals(), context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@require_login
|
@require_login
|
||||||
def index(request):
|
def index(request):
|
||||||
|
if request.session.get('role_id') == 0:
|
||||||
|
return index_cu(request)
|
||||||
users = User.objects.all()
|
users = User.objects.all()
|
||||||
hosts = Asset.objects.all()
|
hosts = Asset.objects.all()
|
||||||
online_host = Log.objects.filter(is_finished=0)
|
online_host = Log.objects.filter(is_finished=0)
|
||||||
|
|
|
@ -109,7 +109,7 @@ def db_del_user(username):
|
||||||
|
|
||||||
def gen_ssh_key(username, password=None, length=2048):
|
def gen_ssh_key(username, password=None, length=2048):
|
||||||
private_key_dir = os.path.join(BASE_DIR, 'keys/jumpserver/')
|
private_key_dir = os.path.join(BASE_DIR, 'keys/jumpserver/')
|
||||||
private_key_file = os.path.join(private_key_dir, username)
|
private_key_file = os.path.join(private_key_dir, username+".pem")
|
||||||
public_key_dir = '/home/%s/.ssh/' % username
|
public_key_dir = '/home/%s/.ssh/' % username
|
||||||
public_key_file = os.path.join(public_key_dir, 'authorized_keys')
|
public_key_file = os.path.join(public_key_dir, 'authorized_keys')
|
||||||
is_dir(private_key_dir)
|
is_dir(private_key_dir)
|
||||||
|
@ -775,18 +775,26 @@ def user_list_adm(request):
|
||||||
return render_to_response('juser/user_list.html', locals(), context_instance=RequestContext(request))
|
return render_to_response('juser/user_list.html', locals(), context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@require_admin
|
@require_login
|
||||||
def user_detail(request):
|
def user_detail(request):
|
||||||
user_id = request.GET.get('id', '')
|
header_title, path1, path2 = '鏌ョ湅鐢ㄦ埛', '鐢ㄦ埛绠$悊', '鐢ㄦ埛璇︽儏'
|
||||||
|
if request.session.get('role_id') == 0:
|
||||||
|
user_id = request.session.get('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('/')
|
||||||
if not user_id:
|
if not user_id:
|
||||||
return HttpResponseRedirect('/juser/user_list/')
|
return HttpResponseRedirect('/juser/user_list/')
|
||||||
if request.session.get('role_id', '') == '1':
|
|
||||||
if not validate(request, user=[user_id]):
|
|
||||||
return HttpResponseRedirect('/juser/user_list/')
|
|
||||||
user = User.objects.filter(id=user_id)
|
user = User.objects.filter(id=user_id)
|
||||||
if user:
|
if user:
|
||||||
user = user[0]
|
user = user[0]
|
||||||
asset_group_permed = user_perm_group_api(user)
|
asset_group_permed = user_perm_group_api(user)
|
||||||
|
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')
|
||||||
|
|
||||||
return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request))
|
return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
@ -953,11 +961,11 @@ def profile(request):
|
||||||
if not user_id:
|
if not user_id:
|
||||||
return HttpResponseRedirect('/')
|
return HttpResponseRedirect('/')
|
||||||
user = User.objects.get(id=user_id)
|
user = User.objects.get(id=user_id)
|
||||||
return render_to_response('juser/user_detail.html', locals(), context_instance=RequestContext(request))
|
return render_to_response('juser/profile.html', locals(), context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
def chg_info(request):
|
def chg_info(request):
|
||||||
header_title, path1, path2 = '淇敼淇℃伅 | Edit Info', '鐢ㄦ埛绠$悊', '淇敼涓汉淇℃伅'
|
header_title, path1, path2 = '淇敼淇℃伅', '鐢ㄦ埛绠$悊', '淇敼涓汉淇℃伅'
|
||||||
user_id = request.session.get('user_id')
|
user_id = request.session.get('user_id')
|
||||||
user_set = User.objects.filter(id=user_id)
|
user_set = User.objects.filter(id=user_id)
|
||||||
error = ''
|
error = ''
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{% include 'nav_cat_bar.html' %}
|
||||||
|
|
||||||
|
<div class="wrapper wrapper-content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<div class="ibox float-e-margins">
|
||||||
|
<div class="ibox-title">
|
||||||
|
<h5> 浣跨敤璇存槑 </h5>
|
||||||
|
<div class="ibox-tools">
|
||||||
|
<a class="collapse-link">
|
||||||
|
<i class="fa fa-chevron-up"></i>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
|
<i class="fa fa-wrench"></i>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu dropdown-user">
|
||||||
|
<li><a href="#">鏈惎鐢 1</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="#">鏈惎鐢 2</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<a class="close-link">
|
||||||
|
<i class="fa fa-times"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ibox-content">
|
||||||
|
helo
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="ibox float-e-margins">
|
<div class="ibox float-e-margins">
|
||||||
<div class="ibox-title">
|
<div class="ibox-title">
|
||||||
<h5>鎺堟潈鐢ㄦ埛 <small> User.</small></h5>
|
<h5>鐢ㄦ埛璇︽儏</h5>
|
||||||
<div class="ibox-tools">
|
<div class="ibox-tools">
|
||||||
<a class="collapse-link">
|
<a class="collapse-link">
|
||||||
<i class="fa fa-chevron-up"></i>
|
<i class="fa fa-chevron-up"></i>
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
{% load mytags %}
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
{% include 'link_css.html' %}
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background: #FFFFFF;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="row">
|
||||||
|
<div class="contact-box">
|
||||||
|
<h2 class="text-center">{{ user.name }} 鐢ㄦ埛璇︽儏</h2>
|
||||||
|
<div class="ibox-content">
|
||||||
|
|
||||||
|
<table class="table table-striped table-bordered table-hover " id="editable" >
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td class="text-center" width="120">ID</td>
|
||||||
|
<td class="text-center">鐢ㄦ埛鍚</td>
|
||||||
|
<td class="text-center">濮撳悕</td>
|
||||||
|
<td class="text-center">瑙掕壊</td>
|
||||||
|
<td class="text-center">閮ㄩ棬</td>
|
||||||
|
<td class="text-center">Email</td>
|
||||||
|
<td class="text-center">婵娲</td>
|
||||||
|
{# <td class="text-center">娣诲姞鏃堕棿</td>#}
|
||||||
|
{# <td class="text-center">鏈鍚庣櫥褰</td>#}
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="gradeX">
|
||||||
|
|
||||||
|
<td class="text-center">{{ user.id }}</td>
|
||||||
|
<td class="text-center">{{ user.username }}</td>
|
||||||
|
<td class="text-center">{{ user.name }}</td>
|
||||||
|
<td class="text-center">{{ user.id | get_role }}</td>
|
||||||
|
<td class="text-center">{{ user.dept.name }}</td>
|
||||||
|
<td class="text-center">{{ user.email }}</td>
|
||||||
|
<td class="text-center">{{ user.is_active|bool2str }}</td>
|
||||||
|
{# <td class="text-center">{{ user.date_joined }}</td>#}
|
||||||
|
{# <td class="text-center">{{ user.last_login }}</td>#}
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="text-center">娣诲姞鏃ユ湡锛 </td>
|
||||||
|
<td colspan="2" class="text-center">{{ user.date_joined }}</td>
|
||||||
|
<td class="text-center">鏈鍚庣櫥褰曪細 </td>
|
||||||
|
<td colspan="3" class="text-center">{{ user.last_login }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="1" class="text-center">鐢ㄦ埛缁勶細</td>
|
||||||
|
<td colspan="6" class="text-center">
|
||||||
|
{% for group in user.group.all %}
|
||||||
|
<b>{{ group.name }}</b>
|
||||||
|
{% endfor %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{# <tr>#}
|
||||||
|
{# <td colspan="1" class="text-center">鎺堟潈涓绘満缁:</td>#}
|
||||||
|
{# <td colspan="6" class="text-center">#}
|
||||||
|
{# {% for group in user|get_user_asset_group %}#}
|
||||||
|
{# <b>{{ group.name }}</b>#}
|
||||||
|
{# {% endfor %}#}
|
||||||
|
{# </td>#}
|
||||||
|
{# </tr>#}
|
||||||
|
{# #}
|
||||||
|
{# <tr class="gradeX">#}
|
||||||
|
{# <td class="text-center">鎺堟潈涓绘満缁</td>#}
|
||||||
|
{# <td class="text-center">#}
|
||||||
|
{# {% for asset_group in asset_group_permed %}#}
|
||||||
|
{# {{ asset_group.name }}#}
|
||||||
|
{# {% endfor %}#}
|
||||||
|
{# </td>#}
|
||||||
|
{# </tr>#}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,82 +1,212 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
{% load mytags %}
|
{% load mytags %}
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
{% include 'link_css.html' %}
|
|
||||||
|
|
||||||
<style type="text/css">
|
|
||||||
body
|
|
||||||
{
|
|
||||||
background: #FFFFFF;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
{% block content %}
|
||||||
|
{% include 'nav_cat_bar.html' %}
|
||||||
|
<div class="wrapper wrapper-content animated fadeInRight">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="contact-box">
|
<div class="col-lg-4">
|
||||||
<h2 class="text-center">{{ user.name }} 鐢ㄦ埛璇︽儏</h2>
|
<div class="ibox float-e-margins">
|
||||||
<div class="ibox-content">
|
<div class="ibox-title">
|
||||||
|
<span class="label label-primary"><b>{{ user.name }}</b></span>
|
||||||
<table class="table table-striped table-bordered table-hover " id="editable" >
|
<div class="ibox-tools">
|
||||||
<thead>
|
<a class="collapse-link">
|
||||||
<tr>
|
<i class="fa fa-chevron-up"></i>
|
||||||
<td class="text-center" width="120">ID</td>
|
</a>
|
||||||
<td class="text-center">鐢ㄦ埛鍚</td>
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
<td class="text-center">濮撳悕</td>
|
<i class="fa fa-wrench"></i>
|
||||||
<td class="text-center">瑙掕壊</td>
|
</a>
|
||||||
<td class="text-center">閮ㄩ棬</td>
|
<ul class="dropdown-menu dropdown-user">
|
||||||
<td class="text-center">Email</td>
|
<li><a href="#"></a>
|
||||||
<td class="text-center">婵娲</td>
|
</li>
|
||||||
{# <td class="text-center">娣诲姞鏃堕棿</td>#}
|
<li><a href="#"></a>
|
||||||
{# <td class="text-center">鏈鍚庣櫥褰</td>#}
|
</li>
|
||||||
</tr>
|
</ul>
|
||||||
</thead>
|
<a class="close-link">
|
||||||
<tbody>
|
<i class="fa fa-times"></i>
|
||||||
<tr class="gradeX">
|
</a>
|
||||||
|
</div>
|
||||||
<td class="text-center">{{ user.id }}</td>
|
</div>
|
||||||
<td class="text-center">{{ user.username }}</td>
|
<div class="ibox-content">
|
||||||
<td class="text-center">{{ user.name }}</td>
|
<div>
|
||||||
<td class="text-center">{{ user.id | get_role }}</td>
|
<div class="text-left">
|
||||||
<td class="text-center">{{ user.dept.name }}</td>
|
<table class="table">
|
||||||
<td class="text-center">{{ user.email }}</td>
|
<tr>
|
||||||
<td class="text-center">{{ user.is_active|bool2str }}</td>
|
<td class="text-navy">ID</td>
|
||||||
{# <td class="text-center">{{ user.date_joined }}</td>#}
|
<td>{{ user.id }}</td>
|
||||||
{# <td class="text-center">{{ user.last_login }}</td>#}
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<td class="text-navy">鐢ㄦ埛鍚</td>
|
||||||
<td class="text-center">娣诲姞鏃ユ湡锛 </td>
|
<td>{{ user.username }}</td>
|
||||||
<td colspan="2" class="text-center">{{ user.date_joined }}</td>
|
</tr>
|
||||||
<td class="text-center">鏈鍚庣櫥褰曪細 </td>
|
<tr>
|
||||||
<td colspan="3" class="text-center">{{ user.last_login }}</td>
|
<td class="text-navy">濮撳悕</td>
|
||||||
</tr>
|
<td>{{ user.name }}</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td colspan="1" class="text-center">鐢ㄦ埛缁勶細</td>
|
<tr>
|
||||||
<td colspan="6" class="text-center">
|
<td class="text-navy">瑙掕壊</td>
|
||||||
{% for group in user.group.all %}
|
<td>{{ user.id | get_role }}</td>
|
||||||
<b>{{ group.name }}</b>
|
</tr>
|
||||||
{% endfor %}
|
<tr>
|
||||||
</td>
|
<td class="text-navy">閮ㄩ棬</td>
|
||||||
</tr>
|
<td>{{ user.dept.name }}</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td colspan="1" class="text-center">鎺堟潈涓绘満缁:</td>
|
<tr>
|
||||||
<td colspan="6" class="text-center">
|
<td class="text-navy">Email</td>
|
||||||
{% for group in user|get_user_asset_group %}
|
<td>{{ user.email }}</td>
|
||||||
<b>{{ group.name }}</b>
|
</tr>
|
||||||
{% endfor %}
|
<tr>
|
||||||
</td>
|
<td class="text-navy">婵娲</td>
|
||||||
</tr>
|
<td>{{ user.is_active|bool2str }}</td>
|
||||||
{# #}
|
</tr>
|
||||||
{# <tr class="gradeX">#}
|
<tr>
|
||||||
{# <td class="text-center">鎺堟潈涓绘満缁</td>#}
|
<td class="text-navy">娣诲姞鏃ユ湡</td>
|
||||||
{# <td class="text-center">#}
|
<td>{{ user.date_joined|date:"Y-m-d H:i:s" }}</td>
|
||||||
{# {% for asset_group in asset_group_permed %}#}
|
</tr>
|
||||||
{# {{ asset_group.name }}#}
|
<tr>
|
||||||
{# {% endfor %}#}
|
<td class="text-navy">鏈鍚庣櫥褰</td>
|
||||||
{# </td>#}
|
<td>{{ user.last_login|date:"Y-m-d H:i:s" }}</td>
|
||||||
{# </tr>#}
|
</tr>
|
||||||
</table>
|
<tr>
|
||||||
|
<td class="text-navy">鎵鍦ㄧ敤鎴风粍</td>
|
||||||
|
<td>
|
||||||
|
<table class="table">
|
||||||
|
{% for group in user.group.all %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ group.name }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col-lg-4">
|
||||||
</body>
|
<div class="ibox float-e-margins">
|
||||||
</html>
|
<div class="ibox-title">
|
||||||
|
<h5>鎺堟潈涓绘満/缁</h5>
|
||||||
|
<div class="ibox-tools">
|
||||||
|
<a class="collapse-link">
|
||||||
|
<i class="fa fa-chevron-up"></i>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
|
<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>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ibox-content ibox-heading">
|
||||||
|
<h3>鐢ㄦ埛鐨勬墍鏈夋巿鏉冧富鏈</h3>
|
||||||
|
<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>{{ group.name }}</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 %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="ibox float-e-margins">
|
||||||
|
<div class="ibox-title">
|
||||||
|
<h5>鐧诲綍璁板綍</h5>
|
||||||
|
<div class="ibox-tools">
|
||||||
|
<span class="label label-warning-light">鏈杩戠櫥褰</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ibox-content">
|
||||||
|
|
||||||
|
<div id="last">
|
||||||
|
<div class="feed-activity-list" >
|
||||||
|
{% for log in logs_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">
|
||||||
|
</a>
|
||||||
|
<div class="media-body ">
|
||||||
|
<small class="pull-right">{{ log.start_time|time_delta }}</small>
|
||||||
|
<strong>{{ log.user }}</strong> 鐧诲綍浜 <span class="text-navy">{{ log.host }}. </span><br>
|
||||||
|
<small class="text-muted">{{ log.start_time|date:"Y-m-d H:i:s" }}</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button id="show" class="btn btn-primary btn-block m-t"><i class="fa fa-arrow-down"></i> Show All</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="all" style="display: none">
|
||||||
|
<div class="feed-activity-list" >
|
||||||
|
{% for log in logs_all %}
|
||||||
|
|
||||||
|
<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">
|
||||||
|
</a>
|
||||||
|
<div class="media-body ">
|
||||||
|
<small class="pull-right">{{ log.start_time|time_delta }}</small>
|
||||||
|
<strong>{{ log.user }}</strong> 鐧诲綍浜 <span class="text-navy">{{ log.host }}. </span><br>
|
||||||
|
<small class="text-muted">{{ log.start_time|date:"Y-m-d H:i:s" }}</small>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('#show').click(function(){
|
||||||
|
$('#last').css('display', 'none');
|
||||||
|
$('#all').css('display', 'block');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -56,6 +56,7 @@
|
||||||
<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>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -71,8 +72,9 @@
|
||||||
<td class="text-center" title="{% for user_group in user.group.all %} {{ user_group.name }} {% endfor %}"> {{ user.group.all | group_str2 }} </td>
|
<td class="text-center" title="{% for user_group in user.group.all %} {{ user_group.name }} {% endfor %}"> {{ user.group.all | group_str2 }} </td>
|
||||||
<td class="text-center"> {{ user.id | get_role }}</td>
|
<td class="text-center"> {{ user.id | get_role }}</td>
|
||||||
<td class="text-center">{{ user.is_active|bool2str }}</td>
|
<td class="text-center">{{ user.is_active|bool2str }}</td>
|
||||||
|
<td class="text-center"><a href="/static/jumpserver/{{ user.username }}.pem">涓嬭浇</a></td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a title="[ {{ user.name }} ] 璇︽儏" value="../user_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">璇︽儏</a>
|
<a href="../user_detail/?id={{ user.id }}" class="btn btn-xs btn-primary">璇︽儏</a>
|
||||||
{% ifequal session_role_id 2 %}
|
{% ifequal session_role_id 2 %}
|
||||||
<a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">缂栬緫</a>
|
<a href="../user_edit/?id={{ user.id }}" class="btn btn-xs btn-info">缂栬緫</a>
|
||||||
<a href="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
|
<a href="../user_del/?id={{ user.id }}" class="btn btn-xs btn-danger">鍒犻櫎</a>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<li class="dept_add"><a href="/juser/dept_add/">娣诲姞閮ㄩ棬</a></li>
|
<li class="dept_add"><a href="/juser/dept_add/">娣诲姞閮ㄩ棬</a></li>
|
||||||
<li class="group_list group_edit"><a href="/juser/group_list/">鏌ョ湅灏忕粍</a></li>
|
<li class="group_list group_edit"><a href="/juser/group_list/">鏌ョ湅灏忕粍</a></li>
|
||||||
<li class="group_add"><a href="/juser/group_add/">娣诲姞灏忕粍</a></li>
|
<li class="group_add"><a href="/juser/group_add/">娣诲姞灏忕粍</a></li>
|
||||||
<li class="user_list user_edit"><a href="/juser/user_list/">鏌ョ湅鐢ㄦ埛<span class="label {% ifequal user_active_num user_total_num %}label-primary {% else %}label-warning {% endifequal %}pull-right">{{ user_active_num }}/{{ user_total_num }}</span></a></li>
|
<li class="user_list user_edit user_detail"><a href="/juser/user_list/">鏌ョ湅鐢ㄦ埛<span class="label {% ifequal user_active_num user_total_num %}label-primary {% else %}label-warning {% endifequal %}pull-right">{{ user_active_num }}/{{ user_total_num }}</span></a></li>
|
||||||
<li class="user_add"><a href="/juser/user_add/">娣诲姞鐢ㄦ埛</a></li>
|
<li class="user_add"><a href="/juser/user_add/">娣诲姞鐢ㄦ埛</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
@ -137,7 +137,7 @@
|
||||||
<a href="/"><i class="fa fa-th-large"></i> <span class="nav-label">浠〃鐩</span><span class="label label-info pull-right"></span></a>
|
<a href="/"><i class="fa fa-th-large"></i> <span class="nav-label">浠〃鐩</span><span class="label label-info pull-right"></span></a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="/"><i class="fa fa-rebel"></i> <span class="nav-label">涓汉淇℃伅</span><span class="label label-info pull-right"></span></a>
|
<a href="/juser/user_detail/?id={{ session_user_id }}"><i class="fa fa-rebel"></i> <span class="nav-label">涓汉淇℃伅</span><span class="label label-info pull-right"></span></a>
|
||||||
</li>
|
</li>
|
||||||
<li id="jasset">
|
<li id="jasset">
|
||||||
<a href="/jasset/host_list/"><i class="fa fa-cube"></i> <span class="nav-label">鏌ョ湅涓绘満</span><span class="label label-info pull-right"></span></a>
|
<a href="/jasset/host_list/"><i class="fa fa-cube"></i> <span class="nav-label">鏌ョ湅涓绘満</span><span class="label label-info pull-right"></span></a>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">{{ session_user_id | to_name}}</strong>
|
<span class="clear"> <span class="block m-t-xs"> <strong class="font-bold">{{ session_user_id | to_name}}</strong>
|
||||||
</span> <span class="text-muted text-xs block">{{ session_role_id | to_role_name }} <b class="caret"></b></span> </span> </a>
|
</span> <span class="text-muted text-xs block">{{ session_role_id | to_role_name }} <b class="caret"></b></span> </span> </a>
|
||||||
<ul class="dropdown-menu animated fadeInRight m-t-xs">
|
<ul class="dropdown-menu animated fadeInRight m-t-xs">
|
||||||
<li><a value="/juser/user_detail/?id={{ session_user_id }}" class="iframe">涓汉淇℃伅</a></li>
|
<li><a value="/juser/profile/?id={{ session_user_id }}" class="iframe">涓汉淇℃伅</a></li>
|
||||||
<li><a href="/juser/chg_info/">淇敼淇℃伅</a></li>
|
<li><a href="/juser/chg_info/">淇敼淇℃伅</a></li>
|
||||||
<li><a href="/juser/chg_role/">鍒囨崲瑙掕壊</a></li>
|
<li><a href="/juser/chg_role/">鍒囨崲瑙掕壊</a></li>
|
||||||
|
|
||||||
|
|
Loading鈥
Reference in New Issue