diff --git a/jperm/models.py b/jperm/models.py
index 336016f8f..1a07e6572 100644
--- a/jperm/models.py
+++ b/jperm/models.py
@@ -5,71 +5,7 @@ from juser.models import User, UserGroup
from jasset.models import Asset, AssetGroup
-# class PermUserAsset(models.Model):
-# user = models.ForeignKey(User)
-# asset = models.ForeignKey(Asset)
-#
-# def __unicode__(self):
-# return self.user.username
-#
-#
-# class PermUserAssetGroup(models.Model):
-# user = models.ForeignKey(User)
-# asset_group = models.ForeignKey(AssetGroup)
-#
-# def __unicode__(self):
-# return self.user.username
-#
-#
-# class PermUserGroupAsset(models.Model):
-# user_group = models.ForeignKey(UserGroup)
-# asset = models.ForeignKey(Asset)
-#
-# def __unicode__(self):
-# return self.user_group.name
-#
-#
-# class PermUserGroupAssetGroup(models.Model):
-# user_group = models.ForeignKey(UserGroup)
-# asset_group = models.ForeignKey(AssetGroup)
-#
-# def __unicode__(self):
-# return self.user_group.name
-
-
-
-# class CmdGroup(models.Model):
-# name = models.CharField(max_length=50, unique=True)
-# cmd = models.CharField(max_length=999)
-# comment = models.CharField(blank=True, null=True, max_length=50)
-#
-# def __unicode__(self):
-# return self.name
-#
-#
-# class SudoPerm(models.Model):
-# user_group = models.ForeignKey(UserGroup)
-# user_runas = models.CharField(max_length=100)
-# asset_group = models.ManyToManyField(AssetGroup)
-# cmd_group = models.ManyToManyField(CmdGroup)
-# comment = models.CharField(max_length=30, null=True, blank=True)
-#
-# def __unicode__(self):
-# return self.user_group.name
-#
-#
-# class Apply(models.Model):
-# uuid = UUIDField(auto=True)
-# applyer = models.CharField(max_length=20)
-# admin = models.CharField(max_length=20)
-# approver = models.CharField(max_length=20)
-# bisgroup = models.CharField(max_length=500)
-# asset = models.CharField(max_length=500)
-# comment = models.TextField(blank=True, null=True)
-# status = models.IntegerField(max_length=2)
-# date_add = models.DateTimeField(null=True)
-# date_end = models.DateTimeField(null=True)
-# read = models.IntegerField(max_length=2)
-#
-# def __unicode__(self):
-# return self.applyer
+class PermLog(models.Model):
+ datetime = models.DateTimeField(auto_now_add=True)
+ result = models.CharField(max_length=1000, null=True, blank=True, default='')
+ is_finished = models.BooleanField(default=False)
diff --git a/jperm/perm_api.py b/jperm/perm_api.py
index 21a69ac09..d777ca82d 100644
--- a/jperm/perm_api.py
+++ b/jperm/perm_api.py
@@ -6,6 +6,7 @@ import uuid
import re
from ansible.playbook import PlayBook
from ansible import callbacks, utils
+from jumpserver.tasks import playbook_run, add
from jumpserver.models import Setting
@@ -54,49 +55,6 @@ def get_playbook(template, var):
return path
-def playbook_run(inventory, playbook, settings):
- stats = callbacks.AggregateStats()
- playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
- runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
- # run the playbook
- if settings:
- playbook = PlayBook(host_list=inventory,
- playbook=playbook,
- forks=5,
- remote_user=settings.default_user,
- remote_port=settings.default_port,
- private_key_file=settings.default_pri_key_path,
- callbacks=playbook_cb,
- runner_callbacks=runner_cb,
- stats=stats,
- become=True,
- become_user='root')
- else:
- playbook = PlayBook(host_list=inventory,
- playbook=playbook,
- forks=5,
- callbacks=playbook_cb,
- runner_callbacks=runner_cb,
- stats=stats,
- become=True,
- become_user='root')
-
- results = playbook.run()
- results_r = {'unreachable': [], 'failures': [], 'success': []}
- for hostname, result in results.items():
- if result.get('unreachable', 2):
- results_r['unreachable'].append(hostname)
- print "%s >>> unreachable" % hostname
- elif result.get('failures', 2):
- results_r['failures'].append(hostname)
- print "%s >>> Failed" % hostname
- else:
- results_r['success'].append(hostname)
- print "%s >>> Success" % hostname
-
- return results_r
-
-
def perm_user_api(perm_info):
"""
用户授权api,通过调用ansible API完成用户新建等,传入参数必须如下,列表中可以是对象,也可以是用户名和ip
@@ -111,6 +69,8 @@ def perm_user_api(perm_info):
new_assets = perm_info['new']['assets']
del_users = perm_info['del']['users']
del_assets = perm_info['del']['assets']
+
+ print new_users, new_assets
except IndexError:
raise ServerError("Error: function perm_user_api传入参数错误")
@@ -125,8 +85,6 @@ def perm_user_api(perm_info):
except IndexError:
raise ServerError("Error: function perm_user_api传入参数错误")
- print new_assets, del_assets
- print new_users, del_users
try:
if var_type == 'str':
new_ip = new_assets
@@ -141,9 +99,6 @@ def perm_user_api(perm_info):
except IndexError:
raise ServerError("Error: function perm_user_api传入参数类型错误")
- print new_ip, del_ip
- print new_username, del_username
-
host_group = {'new': new_ip, 'del': del_ip}
inventory = get_inventory(host_group)
@@ -155,9 +110,22 @@ def perm_user_api(perm_info):
'the_new_users': the_new_users, 'the_del_users': the_del_users,
'the_pub_key': '/tmp/id_rsa.pub'})
+ print playbook, inventory
+
settings = get_object(Setting, name='default')
- results_r = playbook_run(inventory, playbook, settings)
- return results_r
+ results = playbook_run(inventory, playbook, settings)
+ return results
+
+
+def get_user_assets(user):
+ if isinstance(user, int):
+ user = get_object(User, id=user)
+ elif isinstance(user, str):
+ user = get_object(User, username=user)
+ elif isinstance(user, User):
+ user = user
+ else:
+ user = None
def refresh_group_api(user_group=None, asset_group=None):
diff --git a/jperm/urls.py b/jperm/urls.py
index 705ad9307..c95ab9684 100644
--- a/jperm/urls.py
+++ b/jperm/urls.py
@@ -7,6 +7,7 @@ urlpatterns = patterns('jperm.views',
(r'^perm_user_edit/$', perm_user_edit),
(r'^group/$', perm_group_list),
(r'^perm_group_edit/$', perm_group_edit),
+ (r'log/$', log),
# (r'^dept_perm_edit/$', 'dept_perm_edit'),
# (r'^perm_list/$', view_splitter, {'su': perm_list, 'adm': perm_list_adm}),
# (r'^dept_perm_list/$', 'dept_perm_list'),
diff --git a/jperm/views.py b/jperm/views.py
index 98c1b3bb7..8a5e67e3e 100644
--- a/jperm/views.py
+++ b/jperm/views.py
@@ -1 +1 @@
-# # coding: utf-8
# import sys
#
# reload(sys)
# sys.setdefaultencoding('utf8')
#
# from django.shortcuts import render_to_response
# from django.template import RequestContext
# from jperm.models import Perm, SudoPerm, CmdGroup, Apply
from django.db.models import Q
from jperm.models import *
from jumpserver.api import *
from jperm.perm_api import *
@require_role('admin')
def perm_user_list(request):
header_title, path1, path2 = '用户授权', '授权管理', '用户授权'
keyword = request.GET.get('search', '')
users_list = User.objects.all() # 获取所有用户
if keyword:
users_list = users_list.filter(Q(name=keyword) | Q(username=keyword)) # 搜索
users_list, p, users, page_range, current_page, show_first, show_end = pages(users_list, request) # 分页
return my_render('jperm/perm_user_list.html', locals(), request)
@require_role('admin')
def perm_user_edit(request):
header_title, path1, path2 = '用户授权', '授权管理', '授权更改'
user_id = request.GET.get('id', '')
user = get_object(User, id=user_id)
asset_all = Asset.objects.all() # 获取所有资产
asset_group_all = AssetGroup.objects.all() # 获取所有资产组
asset_permed = user.asset.all() # 获取授权的资产对象列表
asset_group_permed = user.asset_group.all() # 获取授权的资产组对象列表
if request.method == 'GET' and user:
assets = [asset for asset in asset_all if asset not in asset_permed] # 获取没有授权的资产对象列表
asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed] # 同理
return my_render('jperm/perm_user_edit.html', locals(), request)
elif request.method == 'POST' and user:
asset_id_select = request.POST.getlist('asset_select', []) # 获取选择的资产id列表
asset_group_id_select = request.POST.getlist('asset_groups_select', []) # 获取选择的资产组id列表
asset_select = get_object_list(Asset, asset_id_select)
asset_group_select = get_object_list(AssetGroup, asset_group_id_select)
asset_new = list(set(asset_select) - set(asset_permed)) # 计算的得到新授权的资产对象列表
asset_del = list(set(asset_permed) - set(asset_select)) # 计算得到回收权限的资产对象列表
asset_group_new = list(set(asset_group_select) - set(asset_group_permed)) # 新授权的资产组对象列表
asset_group_del = list(set(asset_group_permed) - set(asset_group_select)) # 回收的资产组对象列表
perm_info = {
'del': {'users': [user], 'assets': asset_del},
'new': {'users': [user], 'assets': asset_new}
}
try:
results = perm_user_api(perm_info) # 通过API授权或回收
except ServerError, e:
return HttpResponse(e)
unreachable_asset = []
failures_asset = []
for ip in results.get('unreachable'):
unreachable_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
for ip in results.get('failures'):
failures_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
failures_asset.extend(unreachable_asset) # 失败的授权要统计
for asset in failures_asset:
if asset in asset_select:
asset_select.remove(asset)
else:
asset_select.append(asset)
user.asset = asset_select
user.asset_group = asset_group_select
user.save() # 保存到数据库
return HttpResponse(json.dumps(results, sort_keys=True, indent=4), content_type="application/json")
else:
return HttpResponse('输入错误')
@require_role('admin')
def perm_group_list(request):
header_title, path1, path2 = '用户组授权', '授权管理', '用户组授权'
keyword = request.GET.get('search', '')
user_groups_list = UserGroup.objects.all()
if keyword:
request = user_groups_list.filter(Q(name=keyword) | Q(comment=keyword))
user_groups_list, p, user_groups, page_range, current_page, show_first, show_end = pages(user_groups_list, request)
return my_render('jperm/perm_group_list.html', locals(), request)
@require_role('admin')
def perm_group_edit(request):
header_title, path1, path2 = '用户组授权', '授权管理', '授权更改'
user_group_id = request.GET.get('id', '')
user_group = get_object(UserGroup, id=user_group_id)
asset_all = Asset.objects.all()
asset_group_all = AssetGroup.objects.all()
asset_permed = user_group.asset.all() # 获取授权的资产对象列表
asset_group_permed = user_group.asset_group.all() # 获取授权的资产组对象列表
if request.method == 'GET' and user_group:
assets = [asset for asset in asset_all if asset not in asset_permed]
asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed]
return my_render('jperm/perm_group_edit.html', locals(), request)
elif request.method == 'POST' and user_group:
asset_id_select = request.POST.getlist('asset_select', [])
asset_group_id_select = request.POST.getlist('asset_groups_select', [])
asset_select = get_object_list(Asset, asset_id_select)
asset_group_select = get_object_list(AssetGroup, asset_group_id_select)
asset_new = list(set(asset_select) - set(asset_permed)) # 计算的得到新授权的资产对象列表
asset_del = list(set(asset_permed) - set(asset_select)) # 计算得到回收权限的资产对象列表
asset_group_new = list(set(asset_group_select) - set(asset_group_permed)) # 新授权的资产组对象列表
asset_group_del = list(set(asset_group_permed) - set(asset_group_select)) # 回收的资产组对象列表
results = perm_user_api(asset_new, asset_del, asset_group_new, asset_group_del, user_group=user_group) # 通过API授权或回收
unreachable_asset = []
failures_asset = []
for ip in results.get('unreachable'):
unreachable_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
for ip in results.get('failures'):
failures_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
failures_asset.extend(unreachable_asset) # 失败的授权要统计
for asset in failures_asset:
if asset in asset_select:
asset_select.remove(asset)
else:
asset_select.append(asset)
user_group.asset = asset_select
user_group.asset_group = asset_group_select
user_group.save() # 保存到数据库
return HttpResponse(json.dumps(results, sort_keys=True, indent=4), content_type="application/json")
else:
return HttpResponse('输入错误')
\ No newline at end of file
+# # coding: utf-8
# import sys
#
# reload(sys)
# sys.setdefaultencoding('utf8')
#
# from django.shortcuts import render_to_response
# from django.template import RequestContext
# from jperm.models import Perm, SudoPerm, CmdGroup, Apply
from django.db.models import Q
from jumpserver.api import *
from jperm.perm_api import *
from jperm.models import PermLog as Log
@require_role('admin')
def perm_user_list(request):
header_title, path1, path2 = '用户授权', '授权管理', '用户授权'
keyword = request.GET.get('search', '')
users_list = User.objects.all() # 获取所有用户
if keyword:
users_list = users_list.filter(Q(name=keyword) | Q(username=keyword)) # 搜索
users_list, p, users, page_range, current_page, show_first, show_end = pages(users_list, request) # 分页
return my_render('jperm/perm_user_list.html', locals(), request)
@require_role('admin')
def perm_user_edit(request):
header_title, path1, path2 = '用户授权', '授权管理', '授权更改'
user_id = request.GET.get('id', '')
user = get_object(User, id=user_id)
asset_all = Asset.objects.all() # 获取所有资产
asset_group_all = AssetGroup.objects.all() # 获取所有资产组
asset_permed = user.asset.all() # 获取授权的资产对象列表
asset_group_permed = user.asset_group.all() # 获取授权的资产组对象列表
if request.method == 'GET' and user:
assets = [asset for asset in asset_all if asset not in asset_permed] # 获取没有授权的资产对象列表
asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed] # 同理
return my_render('jperm/perm_user_edit.html', locals(), request)
elif request.method == 'POST' and user:
asset_id_select = request.POST.getlist('asset_select', []) # 获取选择的资产id列表
asset_group_id_select = request.POST.getlist('asset_groups_select', []) # 获取选择的资产组id列表
asset_select = get_object_list(Asset, asset_id_select)
asset_group_select = get_object_list(AssetGroup, asset_group_id_select)
asset_new = list(set(asset_select) - set(asset_permed)) # 计算的得到新授权的资产对象列表
asset_del = list(set(asset_permed) - set(asset_select)) # 计算得到回收权限的资产对象列表
asset_group_new = list(set(asset_group_select) - set(asset_group_permed)) # 新授权的资产组对象列表
asset_group_del = list(set(asset_group_permed) - set(asset_group_select)) # 回收的资产组对象列表
for asset_group in asset_group_new:
asset_new.extend(asset_group.asset_set.all())
for asset_group in asset_group_del:
asset_del.extend(asset_group.asset_set.all())
perm_info = {
'del': {'users': [user], 'assets': asset_del},
'new': {'users': [user], 'assets': asset_new}
}
print perm_info
try:
results = perm_user_api(perm_info) # 通过API授权或回收
except ServerError, e:
return HttpResponse(e)
unreachable_asset = []
failures_asset = []
for ip in results.get('unreachable'):
unreachable_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
for ip in results.get('failures'):
failures_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
failures_asset.extend(unreachable_asset) # 失败的授权要统计
for asset in failures_asset:
if asset in asset_select:
asset_select.remove(asset)
else:
asset_select.append(asset)
user.asset = asset_select
user.asset_group = asset_group_select
user.save() # 保存到数据库
return HttpResponse(json.dumps(results, sort_keys=True, indent=4), content_type="application/json")
else:
return HttpResponse('输入错误')
@require_role('admin')
def perm_group_list(request):
header_title, path1, path2 = '用户组授权', '授权管理', '用户组授权'
keyword = request.GET.get('search', '')
user_groups_list = UserGroup.objects.all()
if keyword:
request = user_groups_list.filter(Q(name=keyword) | Q(comment=keyword))
user_groups_list, p, user_groups, page_range, current_page, show_first, show_end = pages(user_groups_list, request)
return my_render('jperm/perm_group_list.html', locals(), request)
@require_role('admin')
def perm_group_edit(request):
header_title, path1, path2 = '用户组授权', '授权管理', '授权更改'
user_group_id = request.GET.get('id', '')
user_group = get_object(UserGroup, id=user_group_id)
asset_all = Asset.objects.all()
asset_group_all = AssetGroup.objects.all()
asset_permed = user_group.asset.all() # 获取授权的资产对象列表
asset_group_permed = user_group.asset_group.all() # 获取授权的资产组对象列表
if request.method == 'GET' and user_group:
assets = [asset for asset in asset_all if asset not in asset_permed]
asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed]
return my_render('jperm/perm_group_edit.html', locals(), request)
elif request.method == 'POST' and user_group:
asset_id_select = request.POST.getlist('asset_select', [])
asset_group_id_select = request.POST.getlist('asset_groups_select', [])
asset_select = get_object_list(Asset, asset_id_select)
asset_group_select = get_object_list(AssetGroup, asset_group_id_select)
asset_new = list(set(asset_select) - set(asset_permed)) # 计算的得到新授权的资产对象列表
asset_del = list(set(asset_permed) - set(asset_select)) # 计算得到回收权限的资产对象列表
asset_group_new = list(set(asset_group_select) - set(asset_group_permed)) # 新授权的资产组对象列表
asset_group_del = list(set(asset_group_permed) - set(asset_group_select)) # 回收的资产组对象列表
results = perm_user_api(asset_new, asset_del, asset_group_new, asset_group_del, user_group=user_group)
unreachable_asset = []
failures_asset = []
for ip in results.get('unreachable'):
unreachable_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
for ip in results.get('failures'):
failures_asset.extend(filter(lambda x: x, Asset.objects.filter(ip=ip)))
failures_asset.extend(unreachable_asset) # 失败的授权要统计
for asset in failures_asset:
if asset in asset_select:
asset_select.remove(asset)
else:
asset_select.append(asset)
user_group.asset = asset_select
user_group.asset_group = asset_group_select
user_group.save() # 保存到数据库
return HttpResponse(json.dumps(results, sort_keys=True, indent=4), content_type="application/json")
else:
return HttpResponse('输入错误')
def log(request):
header_title, path1, path2 = '授权记录', '授权管理', '授权记录'
log_all = Log.objects.all().order_by('-datetime')
log_all, p, logs, page_range, current_page, show_first, show_end = pages(log_all, request)
return my_render('jperm/perm_log.html', locals(), request)
\ No newline at end of file
diff --git a/jumpserver/api.py b/jumpserver/api.py
index fcd21c913..faabb068c 100644
--- a/jumpserver/api.py
+++ b/jumpserver/api.py
@@ -18,8 +18,8 @@ from django.http import HttpResponse, Http404
from django.template import RequestContext
from juser.models import User, UserGroup
from jasset.models import Asset, AssetGroup
-from jlog.models import Log
from jasset.models import AssetAlias
+from jlog.models import Log
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
diff --git a/jumpserver/settings.py b/jumpserver/settings.py
index aeeaec053..0a5a69bee 100644
--- a/jumpserver/settings.py
+++ b/jumpserver/settings.py
@@ -11,7 +11,9 @@ https://docs.djangoproject.com/en/1.7/ref/settings/
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
import ConfigParser
+import djcelery
+djcelery.setup_loader()
config = ConfigParser.ConfigParser()
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
@@ -43,7 +45,7 @@ TEMPLATE_DEBUG = True
ALLOWED_HOSTS = ['0.0.0.0/8']
-
+BROKER_URL = 'django://'
# Application definition
INSTALLED_APPS = (
@@ -54,6 +56,8 @@ INSTALLED_APPS = (
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
+ 'djcelery',
+ 'kombu.transport.django',
'jumpserver',
'juser',
'jasset',
diff --git a/jumpserver/templatetags/mytags.py b/jumpserver/templatetags/mytags.py
index 160970ad2..2bd1df20b 100644
--- a/jumpserver/templatetags/mytags.py
+++ b/jumpserver/templatetags/mytags.py
@@ -12,14 +12,6 @@ from jasset.models import AssetAlias
register = template.Library()
-# @register.filter(name='stamp2str')
-# def stamp2str(value):
-# try:
-# return time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(value))
-# except AttributeError:
-# return '0000/00/00 00:00:00'
-
-
@register.filter(name='int2str')
def int2str(value):
"""
@@ -42,18 +34,6 @@ def get_role(user_id):
return u"普通用户"
-# @register.filter(name='groups_str')
-# def groups_str(user_id):
-# groups = []
-# user = User.objects.get(id=user_id)
-# for group in user.group.all():
-# groups.append(group.name)
-# if len(groups) < 3:
-# return ' '.join(groups)
-# else:
-# return "%s ..." % ' '.join(groups[0:2])
-#
-
@register.filter(name='groups2str')
def groups2str(group_list):
"""
@@ -87,72 +67,6 @@ def user_asset_group_count(user):
"""
return len(user.asset_group.all())
-#
-# @register.filter(name='user_group_asset_count')
-# def user_group_asset_count(user_group):
-# """
-# 返回用户组权限主机的数量
-# """
-# assets_id = user_group.assets.split(',')
-# asset_groups = user_group.asset_groups.split(',')
-#
-# for asset_group_id in asset_groups:
-# asset_group = get_object(AssetGroup, id=asset_group_id)
-# if asset_group:
-# assets_id.extend(asset.id for asset in asset_group.asset_set.all())
-#
-# assets_id = set(map(str, assets_id))
-# return len(assets_id)
-#
-#
-# @register.filter(name='user_group_asset_count')
-# def user_group_asset_group_count(user_group):
-# """
-# 返回用户组权限主机组的数量
-# """
-# return len(user_group.asset_groups.split(','))
-#
-# @register.filter(name='group_str2_all')
-# def group_str2_all(group_list):
-# group_lis = []
-# for i in group_list:
-# if str(i) != 'ALL':
-# group_lis.append(i)
-# if len(group_lis) < 3:
-# return ' '.join([group.name for group in group_lis])
-# else:
-# return '%s ...' % ' '.join([group.name for group in group_lis[0:2]])
-#
-#
-# @register.filter(name='group_dept_all')
-# def group_dept_all(group_list):
-# group_lis = []
-# for i in group_list:
-# if str(i) != 'ALL':
-# group_lis.append(i)
-# return ' '.join([group.name for group in group_lis])
-#
-#
-# @register.filter(name='group_manage_str')
-# def group_manage_str(username):
-# user = User.objects.get(username=username)
-# group = user.user_group.filter(type='M')
-# if group:
-# return group[0].name
-# else:
-# return ''
-#
-#
-# @register.filter(name='get_item')
-# def get_item(dictionary, key):
-# return dictionary.get(key)
-#
-#
-# @register.filter(name='get_login_type')
-# def get_login_type(login):
-# login_types = {'L': 'LDAP', 'M': 'MAP'}
-# return login_types[login]
-
@register.filter(name='bool2str')
def bool2str(value):
@@ -162,16 +76,6 @@ def bool2str(value):
return u'否'
-# # @register.filter(name='user_readonly')
-# # def user_readonly(user_id):
-# # user = User.objects.filter(id=user_id)
-# # if user:
-# # user = user[0]
-# # if user.role == 'CU':
-# # return False
-# # return True
-
-
@register.filter(name='members_count')
def members_count(group_id):
"""统计用户组下成员数量"""
@@ -181,148 +85,6 @@ def members_count(group_id):
else:
return 0
-#
-# @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')
-# def dept_user_num(dept_id):
-# dept = DEPT.objects.filter(id=dept_id)
-# if dept:
-# dept = dept[0]
-# return dept.user_set.count()
-# else:
-# return 0
-#
-#
-# @register.filter(name='dept_group_num')
-# def dept_group_num(dept_id):
-# dept = DEPT.objects.filter(id=dept_id)
-# if dept:
-# dept = dept[0]
-# return dept.usergroup_set.all().count()
-# else:
-# return 0
-#
-#
-# @register.filter(name='perm_count')
-# def perm_count(group_id):
-# group = UserGroup.objects.get(id=group_id)
-# return group.perm_set.count()
-#
-#
-# @register.filter(name='dept_asset_num')
-# def dept_asset_num(dept_id):
-# dept = DEPT.objects.filter(id=dept_id)
-# if dept:
-# dept = dept[0]
-# return dept.asset_set.all().count()
-# return 0
-#
-#
-# @register.filter(name='ugrp_perm_agrp_count')
-# def ugrp_perm_agrp_count(user_group_id):
-# user_group = UserGroup.objects.filter(id=user_group_id)
-# if user_group:
-# user_group = user_group[0]
-# return user_group.perm_set.all().count()
-# return 0
-#
-#
-# @register.filter(name='ugrp_sudo_agrp_count')
-# def ugrp_sudo_agrp_count(user_group_id):
-# user_group = UserGroup.objects.filter(id=user_group_id)
-# asset_groups = []
-# if user_group:
-# user_group = user_group[0]
-# for perm in user_group.sudoperm_set.all():
-# asset_groups.extend(perm.asset_group.all())
-# return len(set(asset_groups))
-# return 0
-#
-#
-# @register.filter(name='ugrp_perm_asset_count')
-# def ugrp_perm_asset_count(user_group_id):
-# user_group = UserGroup.objects.filter(id=user_group_id)
-# assets = []
-# if user_group:
-# user_group = user_group[0]
-# asset_groups = [perm.asset_group for perm in user_group.perm_set.all()]
-# for asset_group in asset_groups:
-# assets.extend(asset_group.asset_set.all())
-# return len(set(assets))
-#
-#
-# @register.filter(name='ugrp_sudo_asset_count')
-# def ugrp_sudo_asset_count(user_group_id):
-# user_group = UserGroup.objects.filter(id=user_group_id)
-# asset_groups = []
-# assets = []
-# if user_group:
-# user_group = user_group[0]
-# for perm in user_group.sudoperm_set.all():
-# asset_groups.extend(perm.asset_group.all())
-#
-# for asset_group in asset_groups:
-# assets.extend(asset_group.asset_set.all())
-# return len(set(assets))
-#
-#
-# @register.filter(name='get_user_alias')
-# def get_user_alias(post, user_id):
-# user = User.objects.get(id=user_id)
-# host = Asset.objects.get(id=post.id)
-# alias = AssetAlias.objects.filter(user=user, host=host)
-# if alias:
-# return alias[0].alias
-# else:
-# return ''
-#
-#
-# @register.filter(name='group_type_to_str')
-# def group_type_to_str(type_name):
-# group_types = {
-# 'P': '用户',
-# 'M': '部门',
-# 'A': '用户组',
-# }
-# return group_types.get(type_name)
-#
-#
-# @register.filter(name='ast_to_list')
-# def ast_to_list(lis):
-# ast_lis = ast.literal_eval(lis)
-# if len(ast_lis) <= 2:
-# return ','.join([i for i in ast_lis])
-# else:
-# restr = ','.join([i for i in ast_lis[0:2]]) + '...'
-# return restr
-#
-#
-# @register.filter(name='get_group_count')
-# def get_group_count(post, dept):
-# count = post.asset_set.filter(dept=dept).count()
-# return count
-#
-#
-# @register.filter(name='get_idc_count')
-# def get_idc_count(post, dept):
-# count = post.asset_set.filter(dept=dept).count()
-# return count
-#
-#
-# @register.filter(name='ast_to_list_1')
-# def ast_to_list_1(lis):
-# return ast.literal_eval(lis)
-#
-#
-# @register.filter(name='string_length')
-# def string_length(string, length):
-# return '%s ...' % string[0:length]
-
@register.filter(name='to_name')
def to_name(user_id):
@@ -336,17 +98,6 @@ def to_name(user_id):
return '非法用户'
-# @register.filter(name='to_dept_name')
-# def to_dept_name(user_id):
-# try:
-# user = User.objects.filter(id=int(user_id))
-# if user:
-# user = user[0]
-# return user.dept.name
-# except:
-# return '非法部门'
-
-
@register.filter(name='to_role_name')
def to_role_name(role_id):
"""role_id 转变为角色名称"""
@@ -359,99 +110,16 @@ def to_avatar(role_id='0'):
"""不同角色不同头像"""
role_dict = {'0': 'user', '1': 'admin', '2': 'root'}
return role_dict.get(str(role_id), 'user')
-#
-#
-# @register.filter(name='get_user_asset_group')
-# def get_user_asset_group(user):
-# return user.get_asset_group()
-#
-#
-# @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
-#
-#
-# @register.filter(name='sudo_cmd_list')
-# def sudo_cmd_list(cmd_group_id):
-# cmd_group = CmdGroup.objects.filter(id=cmd_group_id)
-# if cmd_group:
-# cmd_group = cmd_group[0]
-# return cmd_group.cmd.split(',')
-#
-#
-# @register.filter(name='sudo_cmd_count')
-# def sudo_cmd_count(user_group_id):
-# user_group = UserGroup.objects.filter(id=user_group_id)
-# cmds = []
-# if user_group:
-# user_group = user_group[0]
-# cmd_groups = []
-#
-# for perm in user_group.sudoperm_set.all():
-# cmd_groups.extend(perm.cmd_group.all())
-#
-# for cmd_group in cmd_groups:
-# cmds.extend(cmd_group.cmd.split(','))
-# return len(set(cmds))
-#
-# else:
-# return 0
-#
-#
-# @register.filter(name='sudo_cmd_count')
-# def sudo_cmd_count(user_group_id):
-# user_group = UserGroup.objects.filter(id=user_group_id)
-# cmds = []
-# if user_group:
-# user_group = user_group[0]
-# cmd_groups = []
-# for perm in user_group.sudoperm_set.all():
-# cmd_groups.extend(perm.cmd_group.all())
-#
-# for cmd_group in cmd_groups:
-# cmds.extend(cmd_group.cmd.split(','))
-# return len(set(cmds))
-# else:
-# return 0
-#
-#
-# @register.filter(name='sudo_cmd_ids')
-# def sudo_cmd_ids(user_group_id):
-# user_group = UserGroup.objects.filter(id=user_group_id)
-# if user_group:
-# user_group = user_group[0]
-# cmd_groups = []
-# for perm in user_group.sudoperm_set.all():
-# cmd_groups.extend(perm.cmd_group.all())
-# cmd_ids = [str(cmd_group.id) for cmd_group in cmd_groups]
-# return ','.join(cmd_ids)
-# else:
-# return '0'
-#
-#
-# @register.filter(name='cmd_group_split')
-# def cmd_group_split(cmd_group):
-# return cmd_group.cmd.split(',')
+
+
+@register.filter(name='result2bool')
+def result2bool(result=''):
+ """将结果定向为结果"""
+ result = eval(result)
+ unreachable = result.get('unreachable', [])
+ failures = result.get('failures', [])
+
+ if unreachable or failures:
+ return '失败'
+ else:
+ return '成功'
diff --git a/templates/jperm/dept_perm_edit.html b/templates/jperm/dept_perm_edit.html
deleted file mode 100644
index 7d9c8247f..000000000
--- a/templates/jperm/dept_perm_edit.html
+++ /dev/null
@@ -1,179 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/dept_perm_list.html b/templates/jperm/dept_perm_list.html
deleted file mode 100644
index 92d467d89..000000000
--- a/templates/jperm/dept_perm_list.html
+++ /dev/null
@@ -1,104 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries
-
-
- {% include 'paginator.html' %}
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_apply.html b/templates/jperm/perm_apply.html
deleted file mode 100644
index 167a9574e..000000000
--- a/templates/jperm/perm_apply.html
+++ /dev/null
@@ -1,187 +0,0 @@
-{% extends 'base.html' %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
- {% if emg %}
-
{{ emg }}
- {% endif %}
- {% if smg %}
-
{{ smg }}
- {% endif %}
-
-
-
-
-
-
-
-
-{% endblock content %}
\ No newline at end of file
diff --git a/templates/jperm/perm_apply_exec.html b/templates/jperm/perm_apply_exec.html
deleted file mode 100644
index 6e9580210..000000000
--- a/templates/jperm/perm_apply_exec.html
+++ /dev/null
@@ -1,31 +0,0 @@
-{% extends 'base.html' %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-{% endblock content %}
\ No newline at end of file
diff --git a/templates/jperm/perm_apply_info.html b/templates/jperm/perm_apply_info.html
deleted file mode 100644
index 716b76f15..000000000
--- a/templates/jperm/perm_apply_info.html
+++ /dev/null
@@ -1,55 +0,0 @@
-{% load mytags %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ post.applyer }}权限申请详情
-
-
-
-
申请人
- 所属部门
- 申请主机组
- 申请主机
- {% for i in post.asset|ast_to_list_1 %}
- Null
- {% endfor %}
- 批准人
- 申请时间
- 批准时间
- 备注
-
-
-
-
{{ post.applyer }}
- {{ post.dept }}
- {% for i in post.bisgroup|ast_to_list_1 %} {{ i }} {% endfor %}
- {% for i in post.asset|ast_to_list_1 %}
- {{ i }}
- {% endfor %}
- Null
- {{ post.approver }}1
- {{ post.date_add|date:"Y-m-d H:i:s"}}
- {{ post.date_end|date:"Y-m-d H:i:s" }}1
- {{ post.comment }}
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/jperm/perm_apply_search.html b/templates/jperm/perm_apply_search.html
deleted file mode 100644
index 7f62da3aa..000000000
--- a/templates/jperm/perm_apply_search.html
+++ /dev/null
@@ -1,40 +0,0 @@
-{% load mytags %}
-
-
-
-
- 申请人 |
- 所属部门 |
- 申请主机组 |
- 申请主机 |
- 批准人 |
- 申请时间 |
- 备注 |
- 详情 |
-
-
-
-
- {% for post in contacts.object_list %}
-
- {{ post.applyer }} |
- {{ post.dept }} |
- {{ post.bisgroup|ast_to_list }} |
- {{ post.asset|ast_to_list }} |
- {{ post.approver }} |
- {{ post.date_add|date:"Y-m-d H:i:s"}} |
- {{ post.comment }} |
-
- 详情
- |
-
- {% endfor %}
-
-
-
-
-
- {% include 'paginator.html' %}
-
-
-
\ No newline at end of file
diff --git a/templates/jperm/perm_asset_detail.html b/templates/jperm/perm_asset_detail.html
deleted file mode 100644
index 8be1ece6b..000000000
--- a/templates/jperm/perm_asset_detail.html
+++ /dev/null
@@ -1,61 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-
-{% block content %}
- {% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
- IP |
- IDC |
- 主机组 |
-
-
-
- {% for asset in assets_list %}
-
- {{ asset.ip }} |
- {{ asset.idc.name }} |
-
- {% for group in asset.bis_group.all|filter_private %}
- {{ group }}
- {% endfor %}
- |
-
- {% endfor %}
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_detail.html b/templates/jperm/perm_detail.html
deleted file mode 100644
index b772e4613..000000000
--- a/templates/jperm/perm_detail.html
+++ /dev/null
@@ -1,118 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-
-{% block content %}
- {% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
用户
- 组下用户.
-
-
-
-
-
-
- {{ user_group.name }}
-
- 共: {{ group_user_num }} 用户
-
-
-
{{ user_group.comment }}
-
- {% for user in users %}
- {{ user.name }}
- {% endfor %}
-
-
-
-
-
- {% if not user|get_user_asset_group %}
- (无)
- {% endif %}
-
-
-
-
-
-
-
-
-
授权主机/组
- 这里包含了用户所有的主机组和组下的主机.
-
-
- {% for group in asset_groups %}
-
-
-
-
- {{ group.name }}
-
- 共: {{ group | group_asset_list_count }}台
-
-
-
{{ group.comment }}
-
- {% for asset in group|group_asset_list %}
- {{ asset.ip }}
- {% endfor %}
-
-
-
-
-
- {% endfor %}
- {% if not user|get_user_asset_group %}
- (暂无)
- {% endif %}
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_edit.html b/templates/jperm/perm_edit.html
deleted file mode 100644
index 33cd1e4eb..000000000
--- a/templates/jperm/perm_edit.html
+++ /dev/null
@@ -1,130 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_edit_bak.html b/templates/jperm/perm_edit_bak.html
deleted file mode 100644
index cba2d4155..000000000
--- a/templates/jperm/perm_edit_bak.html
+++ /dev/null
@@ -1,138 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-
-{% block content %}
-
-
- {% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
授权编辑表单 Edit perm of Group
-
-
-
-
-
-
-
-
-
-
-
-
-
-{# #}
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_list_ajax.html b/templates/jperm/perm_list_ajax.html
deleted file mode 100644
index 64a15a0f2..000000000
--- a/templates/jperm/perm_list_ajax.html
+++ /dev/null
@@ -1,132 +0,0 @@
-{% load mytags %}
-{% ifequal tab 'tab1' %}
-
-
-
- 组名 |
-
- 类型
- |
- 成员数量 |
- 授权数量 |
- 操作 |
-
-
-
- {% for group in contacts.object_list %}
-
- {{ group.name }} |
- {{ group.type|group_type_to_str }} |
- {{ group.id|member_count }} |
- {{ group.id|perm_count }} |
-
- 详情
- 编辑
- 删除
- |
-
- {% endfor %}
-
-
-
-
-
- Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries
-
-
-
-
-{% else %}
-
-
-
- 用户 |
- 角色 |
- 属组 |
- 主机数量 |
- 操作 |
-
-
-
- {% for user in contacts2.object_list %}
-
- {{ user.name }} |
- {{ user.id | get_role }} |
- {{ user.username | groups_str }} |
- {{ user.id | perm_asset_count }} |
-
- 详情
- |
-
- {% endfor %}
-
-
-
-
-
- Showing {{ contacts2.start_index }} to {{ contacts2.end_index }} of {{ p2.count }} entries
-
-
-
-
-{% endifequal %}
\ No newline at end of file
diff --git a/templates/jperm/perm_log.html b/templates/jperm/perm_log.html
index 3b71002e6..b24a868a1 100644
--- a/templates/jperm/perm_log.html
+++ b/templates/jperm/perm_log.html
@@ -1,12 +1,14 @@
{% extends 'base.html' %}
+{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
+
-
+
-
-
用户权限申请详细信息列表
+
+
查看小组
-
-
-
-
-
-
- 申请人 |
- 所属部门 |
- 申请主机组 |
- 申请主机 |
- 申请时间 |
- 批准时间 |
- 备注 |
-
-
-
-
- {% for post in contacts.object_list %}
-
- {{ post.applyer }} |
- {{ post.dept }} |
- {{ post.bisgroup }} |
- {{ post.asset }} |
-
-
-
- {{ post.date_add|date:"Y-m-d H:i:s"}} |
- {{ post.date_end|date:"Y-m-d H:i:s" }} |
- {{ post.comment }} |
-
- {% endfor %}
-
-
-
-
+
+
+
+
+ 日期 |
+ 结果 |
+ 完成 |
+
+
+
+ {% for log in logs %}
+
+ {{ log.datetime | date:"Y-n-d G:i:s" }} |
+
+ {{ log.result | result2bool | safe }}
+ |
+ {{ log.is_finished | yesno:"是,否,为止" }} |
+
+ {% endfor %}
+
+
+
+
+
+ Showing {{ users.start_index }} to {{ users.end_index }} of {{ p.count }} entries
+
+
+ {% include 'paginator.html' %}
+
diff --git a/templates/jperm/perm_log_offline.html b/templates/jperm/perm_log_offline.html
deleted file mode 100644
index 8b1250277..000000000
--- a/templates/jperm/perm_log_offline.html
+++ /dev/null
@@ -1,127 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
- 申请人 |
- 所属部门 |
- 申请主机组 |
- 申请主机 |
- 批准人 |
- 申请时间 |
- 备注 |
- 详情 |
-
-
-
-
- {% for post in contacts.object_list %}
-
- {{ post.applyer }} |
- {{ post.dept }} |
- {{ post.bisgroup|ast_to_list }} |
- {{ post.asset|ast_to_list }} |
- {{ post.approver }} |
- {{ post.date_add|date:"Y-m-d H:i:s"}} |
- {{ post.comment }} |
-
- 详情
- |
-
- {% endfor %}
-
-
-
-
-
- {% include 'paginator.html' %}
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_log_online.html b/templates/jperm/perm_log_online.html
deleted file mode 100644
index cda6b07c3..000000000
--- a/templates/jperm/perm_log_online.html
+++ /dev/null
@@ -1,128 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
- 申请人 |
- 所属部门 |
- 申请主机组 |
- 申请主机 |
- 申请时间 |
- 备注 |
- 操作 |
-
-
-
-
- {% for post in contacts.object_list %}
-
- {{ post.applyer }} |
- {{ post.dept }} |
- {{ post.bisgroup|ast_to_list }} |
- {{ post.asset|ast_to_list }} |
- {{ post.date_add|date:"Y-m-d H:i:s"}} |
- {{ post.comment }} |
-
- 详情
- {% ifnotequal session_role_id 0 %}
- 确认
- 删除
- {% endifnotequal %}
- |
-
- {% endfor %}
-
-
-
-
-
- {% include 'paginator.html' %}
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/perm_user_detail.html b/templates/jperm/perm_user_detail.html
deleted file mode 100644
index 3a17821a4..000000000
--- a/templates/jperm/perm_user_detail.html
+++ /dev/null
@@ -1,240 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 名称 |
- 用户组 |
- 主机组 |
- 备注 |
- 操作 |
-
-
-
- {% for perm in contacts.object_list %}
-
- {{ perm.name }} |
-
- {% for user_group in perm.user_group.all %}
- {{ user_group.name }}
- {% endfor %}
- |
-
- {% for asset_group in perm.asset_group.all %}
- {{ asset_group.name }}
- {% endfor %}
- |
- {{ perm.comment }} |
-
- 详情
- 编辑
- 删除
- |
-
- {% endfor %}
-
-
-
-
-
- Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries
-
-
-
-
-
-
-
-{#
#}
-{# #}
-{# #}
-{# 用户 | #}
-{# 角色 | #}
-{# 属组 | #}
-{# 主机数量 | #}
-{# 操作 | #}
-{#
#}
-{# #}
-{# #}
-{# {% for user in contacts2.object_list %}#}
-{# #}
-{# {{ user.name }} | #}
-{# {{ user.id | get_role }} | #}
-{# {{ user.username | groups_str }} | #}
-{# {{ user.id | perm_asset_count }} | #}
-{# #}
-{# 详情#}
-{# | #}
-{#
#}
-{# {% endfor %}#}
-{# #}
-{#
#}
-{#
#}
-{#
#}
-{#
#}
-{# Showing {{ contacts2.start_index }} to {{ contacts2.end_index }} of {{ p2.count }} entries#}
-{#
#}
-{#
#}
-{#
#}
-{#
#}
-{# #}
-{#
#}
-{#
#}
-{#
#}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/sudo_add.html b/templates/jperm/sudo_add.html
deleted file mode 100644
index 0087da321..000000000
--- a/templates/jperm/sudo_add.html
+++ /dev/null
@@ -1,226 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/sudo_cmd_add.html b/templates/jperm/sudo_cmd_add.html
deleted file mode 100644
index ff46b049c..000000000
--- a/templates/jperm/sudo_cmd_add.html
+++ /dev/null
@@ -1,148 +0,0 @@
-{% extends 'base.html' %}
-
-{% block content %}
- {% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/sudo_cmd_detail.html b/templates/jperm/sudo_cmd_detail.html
deleted file mode 100644
index 26a7b8e72..000000000
--- a/templates/jperm/sudo_cmd_detail.html
+++ /dev/null
@@ -1,48 +0,0 @@
-{% load mytags %}
-
-
- {% include 'link_css.html' %}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/jperm/sudo_cmd_list.html b/templates/jperm/sudo_cmd_list.html
deleted file mode 100644
index f7c2d9652..000000000
--- a/templates/jperm/sudo_cmd_list.html
+++ /dev/null
@@ -1,140 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 组名 |
- 命令 |
- 部门 |
- 备注 |
- 操作 |
-
-
-
- {% for group in contacts.object_list %}
-
- {{ group.name }} |
- {{ group.cmd | string_length:50 }} |
- {{ group.dept.name }} |
- {{ group.comment }} |
-
- 详情
- 编辑
- 删除
- |
-
- {% endfor %}
-
-
-
-
-
-
-
-
-
- Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/sudo_detail.html b/templates/jperm/sudo_detail.html
deleted file mode 100644
index c732a4b37..000000000
--- a/templates/jperm/sudo_detail.html
+++ /dev/null
@@ -1,170 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-
-{% block content %}
- {% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
用户
- 组下用户.
-
-
-
-
-
-
- {{ user_group.name }}
-
- 共: {{ group_user_num }} 用户
-
-
-
{{ user_group.comment }}
-
- {% for user in users %}
- {{ user.name }}
- {% endfor %}
-
-
-
-
-
- {% if not users %}
- (暂无)
- {% endif %}
-
-
-
-
-
-
-
-
-
授权主机/组
- 这里包含了sudo授权所有的主机组和组下的主机.
-
-
- {% for group in asset_groups %}
-
-
-
-
- {{ group.name }}
-
- 共: {{ group | group_asset_list_count }}台
-
-
-
{{ group.comment }}
-
- {% for asset in group|group_asset_list %}
- {{ asset.ip }}
- {% endfor %}
-
-
-
-
-
- {% endfor %}
- {% if not asset_groups %}
- (暂无)
- {% endif %}
-
-
-
-
-
-
-
-
- {% for cmd_group in cmd_groups %}
-
-
-
-
- {{ cmd_group.name }}
-
- 共: {{ cmd_group.id|sudo_cmd_count }} 个
-
-
-
{{ group.comment }}
-
- {% for cmd in cmd_group|cmd_group_split %}
- {{ cmd }}
- {% endfor %}
-
-
-
-
-
- {% endfor %}
- {% if not cmd_groups %}
- (暂无)
- {% endif %}
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/jperm/sudo_edit.html b/templates/jperm/sudo_edit.html
deleted file mode 100644
index e1c7977ce..000000000
--- a/templates/jperm/sudo_edit.html
+++ /dev/null
@@ -1,155 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
-
diff --git a/templates/jperm/sudo_list.html b/templates/jperm/sudo_list.html
deleted file mode 100644
index ab9116e7a..000000000
--- a/templates/jperm/sudo_list.html
+++ /dev/null
@@ -1,129 +0,0 @@
-{% extends 'base.html' %}
-{% load mytags %}
-{% block content %}
-{% include 'nav_cat_bar.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Showing {{ contacts.start_index }} to {{ contacts.end_index }} of {{ p.count }} entries
-
-
- {% include 'paginator.html' %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/nav.html b/templates/nav.html
index d0a5e37b9..f0b6bd2db 100644
--- a/templates/nav.html
+++ b/templates/nav.html
@@ -39,6 +39,7 @@
命令授权
权限审批
+
授权记录