Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
907c2c7e
Commit
907c2c7e
authored
9 years ago
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
资产修改基本完成
parent
960e45d0
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
987 additions
and
979 deletions
+987
-979
asset_api.py
jasset/asset_api.py
+8
-1
urls.py
jasset/urls.py
+3
-1
views.py
jasset/views.py
+20
-24
models.py
jperm/models.py
+47
-39
urls.py
jperm/urls.py
+24
-26
views.py
jperm/views.py
+795
-791
urls.py
jumpserver/urls.py
+1
-1
urls.py
juser/urls.py
+1
-3
views.py
juser/views.py
+8
-35
asset_add.html
templates/jasset/asset_add.html
+2
-2
dept_host_ajax.html
templates/jasset/dept_host_ajax.html
+0
-4
group_list.html
templates/jasset/group_list.html
+40
-24
group_list.html
templates/juser/group_list.html
+19
-6
user_list.html
templates/juser/user_list.html
+16
-19
nav.html
templates/nav.html
+3
-3
No files found.
jasset/asset_api.py
View file @
907c2c7e
...
...
@@ -37,8 +37,15 @@ def db_asset_add(**kwargs):
add asset to db
添加主机时数据库操作函数
"""
group_id_list
=
kwargs
.
pop
(
'groups'
)
asset
=
Asset
(
**
kwargs
)
asset
.
save
()
Asset
(
**
kwargs
)
.
save
()
group_select
=
[]
for
group_id
in
group_id_list
:
group
=
AssetGroup
.
objects
.
filter
(
id
=
group_id
)
group_select
.
extend
(
group
)
asset
.
group
=
group_select
#
...
...
This diff is collapsed.
Click to expand it.
jasset/urls.py
View file @
907c2c7e
...
...
@@ -7,6 +7,7 @@ urlpatterns = patterns('',
# url(r"^host_add_multi/$", host_add_batch),
url
(
r'^group_add/$'
,
group_add
),
url
(
r'^group_list/$'
,
group_list
),
url
(
r'^group_del/$'
,
group_del
),
url
(
r'^asset_list/$'
,
asset_list
),
url
(
r'^asset_del/$'
,
asset_del
),
url
(
r"^asset_detail/$"
,
asset_detail
),
...
...
@@ -19,7 +20,7 @@ urlpatterns = patterns('',
# url(r'^group_list/$', group_list),
# url(r'^group_detail/$', group_detail),
# url(r'^group_del_host/$', group_del_host),
# url(r'^group_del/$', group_del),
# url(r'^host_edit/batch/$', host_edit_batch),
# url(r'^host_edit_common/batch/$', host_edit_common_batch),
)
\ No newline at end of file
This diff is collapsed.
Click to expand it.
jasset/views.py
View file @
907c2c7e
...
...
@@ -57,12 +57,27 @@ def group_list(request):
asset_group_list
=
AssetGroup
.
objects
.
all
()
if
keyword
:
asset_group
s
=
asset_group_list
.
filter
(
Q
(
name__contains
=
keyword
)
|
Q
(
comment__contains
=
keyword
))
asset_group
_list
=
asset_group_list
.
filter
(
Q
(
name__contains
=
keyword
)
|
Q
(
comment__contains
=
keyword
))
asset_group_list
,
p
,
asset_groups
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
asset_group_list
,
request
)
return
my_render
(
'jasset/group_list.html'
,
locals
(),
request
)
@require_role
(
'admin'
)
def
group_del
(
request
):
"""
del asset group
删除主机组
"""
group_ids
=
request
.
GET
.
get
(
'id'
,
''
)
group_id_list
=
group_ids
.
split
(
','
)
for
group_id
in
group_id_list
:
AssetGroup
.
objects
.
filter
(
id
=
group_id
)
.
delete
()
return
HttpResponse
(
u'删除成功'
)
@require_role
(
'admin'
)
def
asset_add
(
request
):
"""
...
...
@@ -70,10 +85,11 @@ def asset_add(request):
添加资产
"""
header_title
,
path1
,
path2
=
u'添加资产'
,
u'资产管理'
,
u'添加资产'
asset_group_all
=
AssetGroup
.
objects
.
all
()
if
request
.
method
==
'POST'
:
ip
=
request
.
POST
.
get
(
'ip'
)
port
=
request
.
POST
.
get
(
'port'
)
group
=
request
.
POST
.
getlist
(
'group
'
)
group
s
=
request
.
POST
.
getlist
(
'groups
'
)
use_default_auth
=
True
if
request
.
POST
.
getlist
(
'use_default_auth'
,
[])
else
False
is_active
=
True
if
request
.
POST
.
get
(
'is_active'
)
else
False
comment
=
request
.
POST
.
get
(
'comment'
)
...
...
@@ -96,7 +112,7 @@ def asset_add(request):
else
:
db_asset_add
(
ip
=
ip
,
port
=
port
,
use_default_auth
=
use_default_auth
,
is_active
=
is_active
,
comment
=
comment
,
username
=
username
,
password
=
password_encode
groups
=
groups
,
username
=
username
,
password
=
password_encode
)
msg
=
u'主机
%
s 添加成功'
%
ip
...
...
@@ -447,27 +463,7 @@ def asset_detail(request):
#
# return HttpResponseRedirect('/jasset/group_detail/?id=%s' % group.id)
#
#
# @require_admin
# def group_del(request):
# """ 删除主机组 """
# offset = request.GET.get('id', '')
# if offset == 'multi':
# len_list = request.POST.get("len_list")
# for i in range(int(len_list)):
# key = "id_list[" + str(i) + "]"
# gid = request.POST.get(key)
# if is_group_admin(request) and not validate(request, asset_group=[gid]):
# return httperror(request, '删除失败, 您无权删除!')
# BisGroup.objects.filter(id=gid).delete()
# else:
# gid = int(offset)
# if is_group_admin(request) and not validate(request, asset_group=[gid]):
# return httperror(request, '删除失败, 您无权删除!')
# BisGroup.objects.filter(id=gid).delete()
# return HttpResponseRedirect('/jasset/group_list/')
#
#
# @require_admin
# def dept_host_ajax(request):
# """ 添加主机组时, 部门联动主机异步 """
...
...
This diff is collapsed.
Click to expand it.
jperm/models.py
View file @
907c2c7e
import
datetime
from
uuidfield
import
UUIDField
from
django.db
import
models
from
juser.models
import
UserGroup
from
juser.models
import
User
,
User
Group
from
jasset.models
import
Asset
,
AssetGroup
class
Perm
(
models
.
Model
):
user_group
=
models
.
ForeignKey
(
UserGroup
)
asset_group
=
models
.
ForeignKey
(
AssetGroup
)
def
__unicode__
(
self
):
return
'
%
s_
%
s'
%
(
self
.
user_group
.
name
,
self
.
asset_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
)
class
UserPerm
(
models
.
Model
):
user
=
models
.
ForeignKey
(
User
)
asset
=
models
.
ForeignKey
(
Asset
,
null
=
True
)
asset_group
=
models
.
ForeignKey
(
AssetGroup
,
null
=
True
)
def
__unicode__
(
self
):
return
self
.
name
return
self
.
user
.
name
class
Sudo
Perm
(
models
.
Model
):
class
Group
Perm
(
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
)
asset
=
models
.
ForeignKey
(
Asset
,
null
=
True
)
asset_group
=
models
.
ForeignKey
(
AssetGroup
,
null
=
True
)
def
__unicode__
(
self
):
return
self
.
applyer
return
self
.
user
.
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
This diff is collapsed.
Click to expand it.
jperm/urls.py
View file @
907c2c7e
...
...
@@ -3,31 +3,29 @@ from jperm.views import *
urlpatterns
=
patterns
(
'jperm.views'
,
# Examples:
# url(r'^$', 'jumpserver.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(
r'^user/$'
,
user_perm
),
# (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'),
# (r'^perm_user_detail/$', 'perm_user_detail'),
# (r'^perm_detail/$', 'perm_detail'),
# (r'^perm_del/$', 'perm_del'),
# (r'^perm_asset_detail/$', 'perm_asset_detail'),
# (r'^sudo_list/$', view_splitter, {'su': sudo_list, 'adm': sudo_list_adm}),
# (r'^sudo_del/$', 'sudo_del'),
# (r'^sudo_edit/$', view_splitter, {'su': sudo_edit, 'adm': sudo_edit_adm}),
# (r'^sudo_refresh/$', 'sudo_refresh'),
# (r'^sudo_detail/$', 'sudo_detail'),
# (r'^cmd_add/$', view_splitter, {'su': cmd_add, 'adm': cmd_add_adm}),
# (r'^cmd_list/$', 'cmd_list'),
# (r'^cmd_del/$', 'cmd_del'),
# (r'^cmd_edit/$', 'cmd_edit'),
# (r'^cmd_detail/$', 'cmd_detail'),
# (r'^apply/$', 'perm_apply'),
# (r'^apply_show/(\w+)/$', 'perm_apply_log'),
# (r'^apply_exec/$', 'perm_apply_exec'),
# (r'^apply_info/$', 'perm_apply_info'),
# (r'^apply_del/$', 'perm_apply_del'),
# (r'^apply_search/$', 'perm_apply_search'),
(
r'^perm_edit/$'
,
view_splitter
,
{
'su'
:
perm_edit
,
'adm'
:
perm_edit_adm
}),
(
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'
),
(
r'^perm_user_detail/$'
,
'perm_user_detail'
),
(
r'^perm_detail/$'
,
'perm_detail'
),
(
r'^perm_del/$'
,
'perm_del'
),
(
r'^perm_asset_detail/$'
,
'perm_asset_detail'
),
(
r'^sudo_list/$'
,
view_splitter
,
{
'su'
:
sudo_list
,
'adm'
:
sudo_list_adm
}),
(
r'^sudo_del/$'
,
'sudo_del'
),
(
r'^sudo_edit/$'
,
view_splitter
,
{
'su'
:
sudo_edit
,
'adm'
:
sudo_edit_adm
}),
(
r'^sudo_refresh/$'
,
'sudo_refresh'
),
(
r'^sudo_detail/$'
,
'sudo_detail'
),
(
r'^cmd_add/$'
,
view_splitter
,
{
'su'
:
cmd_add
,
'adm'
:
cmd_add_adm
}),
(
r'^cmd_list/$'
,
'cmd_list'
),
(
r'^cmd_del/$'
,
'cmd_del'
),
(
r'^cmd_edit/$'
,
'cmd_edit'
),
(
r'^cmd_detail/$'
,
'cmd_detail'
),
(
r'^apply/$'
,
'perm_apply'
),
(
r'^apply_show/(\w+)/$'
,
'perm_apply_log'
),
(
r'^apply_exec/$'
,
'perm_apply_exec'
),
(
r'^apply_info/$'
,
'perm_apply_info'
),
(
r'^apply_del/$'
,
'perm_apply_del'
),
(
r'^apply_search/$'
,
'perm_apply_search'
),
)
This diff is collapsed.
Click to expand it.
jperm/views.py
View file @
907c2c7e
# 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
#
#
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
*
def
asset_cmd_groups_get
(
asset_groups_select
=
''
,
cmd_groups_select
=
''
):
asset_groups_select_list
=
[]
cmd_groups_select_list
=
[]
for
asset_group_id
in
asset_groups_select
:
asset_groups_select_list
.
extend
(
BisGroup
.
objects
.
filter
(
id
=
asset_group_id
))
for
cmd_group_id
in
cmd_groups_select
:
cmd_groups_select_list
.
extend
(
CmdGroup
.
objects
.
filter
(
id
=
cmd_group_id
))
return
asset_groups_select_list
,
cmd_groups_select_list
@require_admin
def
perm_add
(
request
):
header_title
,
path1
,
path2
=
u'主机授权添加'
,
u'授权管理'
,
u'授权添加'
if
request
.
method
==
'GET'
:
user_groups
=
UserGroup
.
objects
.
filter
(
id__gt
=
2
)
asset_groups
=
BisGroup
.
objects
.
all
()
else
:
name
=
request
.
POST
.
get
(
'name'
,
''
)
user_groups_select
=
request
.
POST
.
getlist
(
'user_groups_select'
)
asset_groups_select
=
request
.
POST
.
getlist
(
'asset_groups_select'
)
comment
=
request
.
POST
.
get
(
'comment'
,
''
)
user_groups
,
asset_groups
=
user_asset_cmd_groups_get
(
user_groups_select
,
asset_groups_select
,
''
)[
0
:
2
]
perm
=
Perm
(
name
=
name
,
comment
=
comment
)
perm
.
save
()
perm
.
user_group
=
user_groups
perm
.
asset_group
=
asset_groups
msg
=
'添加成功'
return
render_to_response
(
'jperm/perm_add.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
def
dept_add_asset
(
dept_id
,
asset_list
):
dept
=
DEPT
.
objects
.
filter
(
id
=
dept_id
)
if
dept
:
dept
=
dept
[
0
]
new_perm_asset
=
[]
for
asset_id
in
asset_list
:
asset
=
Asset
.
objects
.
filter
(
id
=
asset_id
)
new_perm_asset
.
extend
(
asset
)
dept
.
asset_set
.
clear
()
dept
.
asset_set
=
new_perm_asset
@require_super_user
def
dept_perm_edit
(
request
):
header_title
,
path1
,
path2
=
u'部门授权添加'
,
u'授权管理'
,
u'部门授权添加'
if
request
.
method
==
'GET'
:
dept_id
=
request
.
GET
.
get
(
'id'
,
''
)
dept
=
DEPT
.
objects
.
filter
(
id
=
dept_id
)
if
dept
:
dept
=
dept
[
0
]
asset_all
=
Asset
.
objects
.
all
()
asset_select
=
dept
.
asset_set
.
all
()
assets
=
[
asset
for
asset
in
asset_all
if
asset
not
in
asset_select
]
else
:
dept_id
=
request
.
POST
.
get
(
'dept_id'
)
asset_select
=
request
.
POST
.
getlist
(
'asset_select'
)
dept_add_asset
(
dept_id
,
asset_select
)
return
HttpResponseRedirect
(
'/jperm/dept_perm_list/'
)
return
render_to_response
(
'jperm/dept_perm_edit.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_super_user
def
perm_list
(
request
):
header_title
,
path1
,
path2
=
u'小组授权'
,
u'授权管理'
,
u'授权详情'
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
uid
=
request
.
GET
.
get
(
'uid'
,
''
)
agid
=
request
.
GET
.
get
(
'agid'
,
''
)
if
keyword
:
contact_list
=
UserGroup
.
objects
.
filter
(
Q
(
name__icontains
=
keyword
)
|
Q
(
comment__icontains
=
keyword
))
else
:
contact_list
=
UserGroup
.
objects
.
all
()
.
order_by
(
'name'
)
if
uid
:
user
=
User
.
objects
.
filter
(
id
=
uid
)
print
user
if
user
:
user
=
user
[
0
]
contact_list
=
contact_list
.
filter
(
user
=
user
)
if
agid
:
contact_list_confirm
=
[]
asset_group
=
BisGroup
.
objects
.
filter
(
id
=
agid
)
if
asset_group
:
asset_group
=
asset_group
[
0
]
for
user_group
in
contact_list
:
if
asset_group
in
user_group_perm_asset_group_api
(
user_group
):
contact_list_confirm
.
append
(
user_group
)
contact_list
=
contact_list_confirm
contact_list
,
p
,
contacts
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
contact_list
,
request
)
return
render_to_response
(
'jperm/perm_list.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
perm_list_adm
(
request
):
header_title
,
path1
,
path2
=
u'小组授权'
,
u'授权管理'
,
u'授权详情'
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
uid
=
request
.
GET
.
get
(
'uid'
,
''
)
agid
=
request
.
GET
.
get
(
'agid'
,
''
)
user
,
dept
=
get_session_user_dept
(
request
)
contact_list
=
dept
.
usergroup_set
.
all
()
.
order_by
(
'name'
)
if
keyword
:
contact_list
=
contact_list
.
filter
(
Q
(
name__icontains
=
keyword
)
|
Q
(
comment__icontains
=
keyword
))
if
uid
:
user
=
User
.
objects
.
filter
(
id
=
uid
)
print
user
if
user
:
user
=
user
[
0
]
contact_list
=
contact_list
.
filter
(
user
=
user
)
if
agid
:
contact_list_confirm
=
[]
asset_group
=
BisGroup
.
objects
.
filter
(
id
=
agid
)
if
asset_group
:
asset_group
=
asset_group
[
0
]
for
user_group
in
contact_list
:
if
asset_group
in
user_group_perm_asset_group_api
(
user_group
):
contact_list_confirm
.
append
(
user_group
)
contact_list
=
contact_list_confirm
contact_list
,
p
,
contacts
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
contact_list
,
request
)
return
render_to_response
(
'jperm/perm_list.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_super_user
def
dept_perm_list
(
request
):
header_title
,
path1
,
path2
=
'查看部门'
,
'授权管理'
,
'部门授权'
keyword
=
request
.
GET
.
get
(
'search'
)
if
keyword
:
contact_list
=
DEPT
.
objects
.
filter
(
Q
(
name__icontains
=
keyword
)
|
Q
(
comment__icontains
=
keyword
))
.
order_by
(
'name'
)
else
:
contact_list
=
DEPT
.
objects
.
filter
(
id__gt
=
2
)
contact_list
,
p
,
contacts
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
contact_list
,
request
)
return
render_to_response
(
'jperm/dept_perm_list.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
def
perm_group_update
(
user_group_id
,
asset_groups_id_list
):
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
if
user_group
:
user_group
=
user_group
[
0
]
old_asset_group
=
[
perm
.
asset_group
for
perm
in
user_group
.
perm_set
.
all
()]
new_asset_group
=
[]
for
asset_group_id
in
asset_groups_id_list
:
new_asset_group
.
extend
(
BisGroup
.
objects
.
filter
(
id
=
asset_group_id
))
del_asset_group
=
[
asset_group
for
asset_group
in
old_asset_group
if
asset_group
not
in
new_asset_group
]
add_asset_group
=
[
asset_group
for
asset_group
in
new_asset_group
if
asset_group
not
in
old_asset_group
]
for
asset_group
in
del_asset_group
:
Perm
.
objects
.
filter
(
user_group
=
user_group
,
asset_group
=
asset_group
)
.
delete
()
for
asset_group
in
add_asset_group
:
Perm
(
user_group
=
user_group
,
asset_group
=
asset_group
)
.
save
()
def
user_perm
(
request
):
return
my_render
(
'jperm/perm_add.html'
,
locals
(),
request
)
@require_super_user
def
perm_edit
(
request
):
if
request
.
method
==
'GET'
:
header_title
,
path1
,
path2
=
u'编辑授权'
,
u'授权管理'
,
u'授权编辑'
user_group_id
=
request
.
GET
.
get
(
'id'
,
''
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
if
user_group
:
user_group
=
user_group
[
0
]
asset_groups_all
=
BisGroup
.
objects
.
all
()
asset_groups_select
=
[
perm
.
asset_group
for
perm
in
user_group
.
perm_set
.
all
()]
asset_groups
=
[
asset_group
for
asset_group
in
asset_groups_all
if
asset_group
not
in
asset_groups_select
]
else
:
user_group_id
=
request
.
POST
.
get
(
'user_group_id'
)
asset_group_id_list
=
request
.
POST
.
getlist
(
'asset_groups_select'
)
perm_group_update
(
user_group_id
,
asset_group_id_list
)
return
HttpResponseRedirect
(
'/jperm/perm_list/'
)
return
render_to_response
(
'jperm/perm_edit.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
perm_edit_adm
(
request
):
if
request
.
method
==
'GET'
:
header_title
,
path1
,
path2
=
u'编辑授权'
,
u'授权管理'
,
u'授权编辑'
user_group_id
=
request
.
GET
.
get
(
'id'
,
''
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
user
,
dept
=
get_session_user_dept
(
request
)
if
user_group
:
user_group
=
user_group
[
0
]
asset_groups_all
=
dept
.
bisgroup_set
.
all
()
asset_groups_select
=
[
perm
.
asset_group
for
perm
in
user_group
.
perm_set
.
all
()]
asset_groups
=
[
asset_group
for
asset_group
in
asset_groups_all
if
asset_group
not
in
asset_groups_select
]
else
:
user_group_id
=
request
.
POST
.
get
(
'user_group_id'
)
asset_group_id_list
=
request
.
POST
.
getlist
(
'asset_groups_select'
)
print
user_group_id
,
asset_group_id_list
if
not
validate
(
request
,
user_group
=
[
user_group_id
],
asset_group
=
asset_group_id_list
):
return
HttpResponseRedirect
(
'/'
)
perm_group_update
(
user_group_id
,
asset_group_id_list
)
return
HttpResponseRedirect
(
'/jperm/perm_list/'
)
return
render_to_response
(
'jperm/perm_edit.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
perm_detail
(
request
):
header_title
,
path1
,
path2
=
u'授权管理'
,
u'小组管理'
,
u'授权详情'
group_id
=
request
.
GET
.
get
(
'id'
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
group_id
)
if
user_group
:
user_group
=
user_group
[
0
]
users
=
user_group
.
user_set
.
all
()
group_user_num
=
len
(
users
)
perms
=
user_group
.
perm_set
.
all
()
asset_groups
=
[
perm
.
asset_group
for
perm
in
perms
]
return
render_to_response
(
'jperm/perm_detail.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
perm_del
(
request
):
perm_id
=
request
.
GET
.
get
(
'id'
)
perm
=
Perm
.
objects
.
filter
(
id
=
perm_id
)
if
perm
:
perm
=
perm
[
0
]
perm
.
delete
()
return
HttpResponseRedirect
(
'/jperm/perm_list/'
)
@require_admin
def
perm_asset_detail
(
request
):
header_title
,
path1
,
path2
=
u'用户授权主机'
,
u'权限管理'
,
u'用户主机详情'
user_id
=
request
.
GET
.
get
(
'id'
)
user
=
User
.
objects
.
filter
(
id
=
user_id
)
if
user
:
user
=
user
[
0
]
assets_list
=
user_perm_asset_api
(
user
.
username
)
return
render_to_response
(
'jperm/perm_asset_detail.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
def
unicode2str
(
unicode_list
):
return
[
str
(
i
)
for
i
in
unicode_list
]
# def sudo_ldap_add(user_group, user_runas, asset_groups_select,
# cmd_groups_select):
# if not LDAP_ENABLE:
# return True
# def asset_cmd_groups_get(asset_groups_select='', cmd_groups_select=''):
# asset_groups_select_list = []
# cmd_groups_select_list = []
#
# for asset_group_id in asset_groups_select:
# asset_groups_select_list.extend(BisGroup.objects.filter(id=asset_group_id))
#
# for cmd_group_id in cmd_groups_select:
# cmd_groups_select_list.extend(CmdGroup.objects.filter(id=cmd_group_id))
#
# return asset_groups_select_list, cmd_groups_select_list
#
#
# @require_admin
# def perm_add(request):
# header_title, path1, path2 = u'主机授权添加', u'授权管理', u'授权添加'
#
# if request.method == 'GET':
# user_groups = UserGroup.objects.filter(id__gt=2)
# asset_groups = BisGroup.objects.all()
#
# assets = []
# cmds = []
# user_runas = user_runas.split(',')
# if len(asset_groups_select) == 1 and asset_groups_select[0].name == 'ALL':
# asset_all = True
# else:
# asset_all = False
# for asset_group in asset_groups_select:
# assets.extend(asset_group.asset_set.all())
# name = request.POST.get('name', '')
# user_groups_select = request.POST.getlist('user_groups_select')
# asset_groups_select = request.POST.getlist('asset_groups_select')
# comment = request.POST.get('comment', '')
#
# user_groups, asset_groups = user_asset_cmd_groups_get(user_groups_select, asset_groups_select, '')[0:2]
#
# perm = Perm(name=name, comment=comment)
# perm.save()
#
# perm.user_group = user_groups
# perm.asset_group = asset_groups
# msg = '添加成功'
# return render_to_response('jperm/perm_add.html', locals(), context_instance=RequestContext(request))
#
#
# if user_group.name == 'ALL':
# user_all = True
# users = []
# def dept_add_asset(dept_id, asset_list):
# dept = DEPT.objects.filter(id=dept_id)
# if dept:
# dept = dept[0]
# new_perm_asset = []
# for asset_id in asset_list:
# asset = Asset.objects.filter(id=asset_id)
# new_perm_asset.extend(asset)
#
# dept.asset_set.clear()
# dept.asset_set = new_perm_asset
#
#
# @require_super_user
# def dept_perm_edit(request):
# header_title, path1, path2 = u'部门授权添加', u'授权管理', u'部门授权添加'
# if request.method == 'GET':
# dept_id = request.GET.get('id', '')
# dept = DEPT.objects.filter(id=dept_id)
# if dept:
# dept = dept[0]
# asset_all = Asset.objects.all()
# asset_select = dept.asset_set.all()
# assets = [asset for asset in asset_all if asset not in asset_select]
# else:
# user_all = False
# dept_id = request.POST.get('dept_id')
# asset_select = request.POST.getlist('asset_select')
# dept_add_asset(dept_id, asset_select)
# return HttpResponseRedirect('/jperm/dept_perm_list/')
# return render_to_response('jperm/dept_perm_edit.html', locals(), context_instance=RequestContext(request))
#
#
# @require_super_user
# def perm_list(request):
# header_title, path1, path2 = u'小组授权', u'授权管理', u'授权详情'
# keyword = request.GET.get('search', '')
# uid = request.GET.get('uid', '')
# agid = request.GET.get('agid', '')
# if keyword:
# contact_list = UserGroup.objects.filter(Q(name__icontains=keyword) | Q(comment__icontains=keyword))
# else:
# contact_list = UserGroup.objects.all().order_by('name')
#
# if uid:
# user = User.objects.filter(id=uid)
# print user
# if user:
# user = user[0]
# contact_list = contact_list.filter(user=user)
#
# if agid:
# contact_list_confirm = []
# asset_group = BisGroup.objects.filter(id=agid)
# if asset_group:
# asset_group = asset_group[0]
# for user_group in contact_list:
# if asset_group in user_group_perm_asset_group_api(user_group):
# contact_list_confirm.append(user_group)
# contact_list = contact_list_confirm
#
# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(contact_list, request)
# return render_to_response('jperm/perm_list.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def perm_list_adm(request):
# header_title, path1, path2 = u'小组授权', u'授权管理', u'授权详情'
# keyword = request.GET.get('search', '')
# uid = request.GET.get('uid', '')
# agid = request.GET.get('agid', '')
# user, dept = get_session_user_dept(request)
# contact_list = dept.usergroup_set.all().order_by('name')
# if keyword:
# contact_list = contact_list.filter(Q(name__icontains=keyword) | Q(comment__icontains=keyword))
#
# if uid:
# user = User.objects.filter(id=uid)
# print user
# if user:
# user = user[0]
# contact_list = contact_list.filter(user=user)
#
# if agid:
# contact_list_confirm = []
# asset_group = BisGroup.objects.filter(id=agid)
# if asset_group:
# asset_group = asset_group[0]
# for user_group in contact_list:
# if asset_group in user_group_perm_asset_group_api(user_group):
# contact_list_confirm.append(user_group)
# contact_list = contact_list_confirm
#
# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(contact_list, request)
# return render_to_response('jperm/perm_list.html', locals(), context_instance=RequestContext(request))
#
#
# @require_super_user
# def dept_perm_list(request):
# header_title, path1, path2 = '查看部门', '授权管理', '部门授权'
# keyword = request.GET.get('search')
# if keyword:
# contact_list = DEPT.objects.filter(Q(name__icontains=keyword) | Q(comment__icontains=keyword)).order_by('name')
# else:
# contact_list = DEPT.objects.filter(id__gt=2)
#
# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(contact_list, request)
#
# return render_to_response('jperm/dept_perm_list.html', locals(), context_instance=RequestContext(request))
#
#
# def perm_group_update(user_group_id, asset_groups_id_list):
# user_group = UserGroup.objects.filter(id=user_group_id)
# if user_group:
# user_group = user_group[0]
# old_asset_group = [perm.asset_group for perm in user_group.perm_set.all()]
# new_asset_group = []
#
# for asset_group_id in asset_groups_id_list:
# new_asset_group.extend(BisGroup.objects.filter(id=asset_group_id))
#
# del_asset_group = [asset_group for asset_group in old_asset_group if asset_group not in new_asset_group]
# add_asset_group = [asset_group for asset_group in new_asset_group if asset_group not in old_asset_group]
#
# for asset_group in del_asset_group:
# Perm.objects.filter(user_group=user_group, asset_group=asset_group).delete()
#
# for asset_group in add_asset_group:
# Perm(user_group=user_group, asset_group=asset_group).save()
#
#
# @require_super_user
# def perm_edit(request):
# if request.method == 'GET':
# header_title, path1, path2 = u'编辑授权', u'授权管理', u'授权编辑'
# user_group_id = request.GET.get('id', '')
# user_group = UserGroup.objects.filter(id=user_group_id)
# if user_group:
# user_group = user_group[0]
# asset_groups_all = BisGroup.objects.all()
# asset_groups_select = [perm.asset_group for perm in user_group.perm_set.all()]
# asset_groups = [asset_group for asset_group in asset_groups_all if asset_group not in asset_groups_select]
# else:
# user_group_id = request.POST.get('user_group_id')
# asset_group_id_list = request.POST.getlist('asset_groups_select')
# perm_group_update(user_group_id, asset_group_id_list)
#
# return HttpResponseRedirect('/jperm/perm_list/')
# return render_to_response('jperm/perm_edit.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def perm_edit_adm(request):
# if request.method == 'GET':
# header_title, path1, path2 = u'编辑授权', u'授权管理', u'授权编辑'
# user_group_id = request.GET.get('id', '')
# user_group = UserGroup.objects.filter(id=user_group_id)
# user, dept = get_session_user_dept(request)
# if user_group:
# user_group = user_group[0]
# asset_groups_all = dept.bisgroup_set.all()
# asset_groups_select = [perm.asset_group for perm in user_group.perm_set.all()]
# asset_groups = [asset_group for asset_group in asset_groups_all if asset_group not in asset_groups_select]
# else:
# user_group_id = request.POST.get('user_group_id')
# asset_group_id_list = request.POST.getlist('asset_groups_select')
# print user_group_id, asset_group_id_list
# if not validate(request, user_group=[user_group_id], asset_group=asset_group_id_list):
# return HttpResponseRedirect('/')
# perm_group_update(user_group_id, asset_group_id_list)
#
# return HttpResponseRedirect('/jperm/perm_list/')
# return render_to_response('jperm/perm_edit.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def perm_detail(request):
# header_title, path1, path2 = u'授权管理', u'小组管理', u'授权详情'
# group_id = request.GET.get('id')
# user_group = UserGroup.objects.filter(id=group_id)
# if user_group:
# user_group = user_group[0]
# users = user_group.user_set.all()
# group_user_num = len(users)
# perms = user_group.perm_set.all()
# asset_groups = [perm.asset_group for perm in perms]
# return render_to_response('jperm/perm_detail.html', locals(), context_instance=RequestContext(request))
#
# for cmd_group in cmd_groups_select:
# cmds.extend(cmd_group.cmd.split(','))
#
# if user_all:
# users_name = ['ALL']
# @require_admin
# def perm_del(request):
# perm_id = request.GET.get('id')
# perm = Perm.objects.filter(id=perm_id)
# if perm:
# perm = perm[0]
# perm.delete()
# return HttpResponseRedirect('/jperm/perm_list/')
#
#
# @require_admin
# def perm_asset_detail(request):
# header_title, path1, path2 = u'用户授权主机', u'权限管理', u'用户主机详情'
# user_id = request.GET.get('id')
# user = User.objects.filter(id=user_id)
# if user:
# user = user[0]
# assets_list = user_perm_asset_api(user.username)
# return render_to_response('jperm/perm_asset_detail.html', locals(), context_instance=RequestContext(request))
#
#
# def unicode2str(unicode_list):
# return [str(i) for i in unicode_list]
#
#
# # def sudo_ldap_add(user_group, user_runas, asset_groups_select,
# # cmd_groups_select):
# # if not LDAP_ENABLE:
# # return True
# #
# # assets = []
# # cmds = []
# # user_runas = user_runas.split(',')
# # if len(asset_groups_select) == 1 and asset_groups_select[0].name == 'ALL':
# # asset_all = True
# # else:
# # asset_all = False
# # for asset_group in asset_groups_select:
# # assets.extend(asset_group.asset_set.all())
# #
# # if user_group.name == 'ALL':
# # user_all = True
# # users = []
# # else:
# # user_all = False
# # users = user_group.user_set.all()
# #
# # for cmd_group in cmd_groups_select:
# # cmds.extend(cmd_group.cmd.split(','))
# #
# # if user_all:
# # users_name = ['ALL']
# # else:
# # users_name = list(set([user.username for user in users]))
# #
# # if asset_all:
# # assets_ip = ['ALL']
# # else:
# # assets_ip = list(set([asset.ip for asset in assets]))
# #
# # name = 'sudo%s' % user_group.id
# # sudo_dn = 'cn=%s,ou=Sudoers,%s' % (name, LDAP_BASE_DN)
# # sudo_attr = {'objectClass': ['top', 'sudoRole'],
# # 'cn': ['%s' % name],
# # 'sudoCommand': unicode2str(cmds),
# # 'sudoHost': unicode2str(assets_ip),
# # 'sudoOption': ['!authenticate'],
# # 'sudoRunAsUser': unicode2str(user_runas),
# # 'sudoUser': unicode2str(users_name)}
# # ldap_conn.delete(sudo_dn)
# # ldap_conn.add(sudo_dn, sudo_attr)
#
# #
# # def sudo_update(user_group, user_runas, asset_groups_select, cmd_groups_select, comment):
# # asset_groups_select_list, cmd_groups_select_list = \
# # asset_cmd_groups_get(asset_groups_select, cmd_groups_select)
# # sudo_perm = user_group.sudoperm_set.all()
# # if sudo_perm:
# # sudo_perm.update(user_runas=user_runas, comment=comment)
# # sudo_perm = sudo_perm[0]
# # sudo_perm.asset_group = asset_groups_select_list
# # sudo_perm.cmd_group = cmd_groups_select_list
# # else:
# # sudo_perm = SudoPerm(user_group=user_group, user_runas=user_runas, comment=comment)
# # sudo_perm.save()
# # sudo_perm.asset_group = asset_groups_select_list
# # sudo_perm.cmd_group = cmd_groups_select_list
# #
# # sudo_ldap_add(user_group, user_runas, asset_groups_select_list, cmd_groups_select_list)
#
#
# @require_super_user
# def sudo_list(request):
# header_title, path1, path2 = u'Sudo授权', u'权限管理', u'Sudo权限详情'
# keyword = request.GET.get('search', '')
# contact_list = UserGroup.objects.all().order_by('name')
# if keyword:
# contact_list = contact_list.filter(Q(name__icontains=keyword) | Q(comment__icontains=keyword))
#
# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(contact_list, request)
# return render_to_response('jperm/sudo_list.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def sudo_list_adm(request):
# header_title, path1, path2 = u'Sudo授权', u'权限管理', u'Sudo权限详情'
# keyword = request.GET.get('search', '')
# user, dept = get_session_user_dept(request)
# contact_list = dept.usergroup_set.all().order_by('name')
# if keyword:
# contact_list = contact_list.filter(Q(name__icontains=keyword) | Q(comment__icontains=keyword))
#
# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(contact_list, request)
# return render_to_response('jperm/sudo_list.html', locals(), context_instance=RequestContext(request))
#
#
# @require_super_user
# def sudo_edit(request):
# header_title, path1, path2 = u'Sudo授权', u'授权管理', u'Sudo授权'
#
# if request.method == 'GET':
# user_group_id = request.GET.get('id', '0')
# user_group = UserGroup.objects.filter(id=user_group_id)
# asset_group_all = BisGroup.objects.filter()
# cmd_group_all = CmdGroup.objects.all()
# if user_group:
# user_group = user_group[0]
# sudo_perm = user_group.sudoperm_set.all()
# if sudo_perm:
# sudo_perm = sudo_perm[0]
# asset_group_permed = sudo_perm.asset_group.all()
# cmd_group_permed = sudo_perm.cmd_group.all()
# user_runas = sudo_perm.user_runas
# comment = sudo_perm.comment
# else:
# users_name = list(set([user.username for user in users]))
# asset_group_permed = []
# cmd_group_permed = []
#
# asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed]
# cmd_groups = [cmd_group for cmd_group in cmd_group_all if cmd_group not in cmd_group_permed]
#
# if asset_all:
# assets_ip = ['ALL']
# else:
# assets_ip = list(set([asset.ip for asset in assets]))
#
# name = 'sudo%s' % user_group.id
# sudo_dn = 'cn=%s,ou=Sudoers,%s' % (name, LDAP_BASE_DN)
# sudo_attr = {'objectClass': ['top', 'sudoRole'],
# 'cn': ['%s' % name],
# 'sudoCommand': unicode2str(cmds),
# 'sudoHost': unicode2str(assets_ip),
# 'sudoOption': ['!authenticate'],
# 'sudoRunAsUser': unicode2str(user_runas),
# 'sudoUser': unicode2str(users_name)}
# ldap_conn.delete(sudo_dn)
# ldap_conn.add(sudo_dn, sudo_attr)
# user_group_id = request.POST.get('user_group_id', '')
# users_runas = request.POST.get('runas') if request.POST.get('runas') else 'root'
# asset_groups_select = request.POST.getlist('asset_groups_select')
# cmd_groups_select = request.POST.getlist('cmd_groups_select')
# comment = request.POST.get('comment', '')
# user_group = UserGroup.objects.filter(id=user_group_id)
# if user_group:
# user_group = user_group[0]
# if LDAP_ENABLE:
# sudo_update(user_group, users_runas, asset_groups_select, cmd_groups_select, comment)
# msg = '修改成功'
#
# return HttpResponseRedirect('/jperm/sudo_list/')
#
# def sudo_update(user_group, user_runas, asset_groups_select, cmd_groups_select, comment):
# asset_groups_select_list, cmd_groups_select_list = \
# asset_cmd_groups_get(asset_groups_select, cmd_groups_select)
# return render_to_response('jperm/sudo_edit.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def sudo_edit_adm(request):
# header_title, path1, path2 = u'Sudo授权', u'授权管理', u'Sudo授权'
# user, dept = get_session_user_dept(request)
# if request.method == 'GET':
# user_group_id = request.GET.get('id', '0')
# if not validate(request, user_group=[user_group_id]):
# return render_to_response('/jperm/sudo_list/')
# user_group = UserGroup.objects.filter(id=user_group_id)
# asset_group_all = dept.bisgroup_set.all()
# cmd_group_all = dept.cmdgroup_set.all()
# if user_group:
# user_group = user_group[0]
# sudo_perm = user_group.sudoperm_set.all()
# if sudo_perm:
# sudo_perm.update(user_runas=user_runas, comment=comment)
# sudo_perm = sudo_perm[0]
# sudo_perm.asset_group = asset_groups_select_list
# sudo_perm.cmd_group = cmd_groups_select_list
# asset_group_permed = sudo_perm.asset_group.all()
# cmd_group_permed = sudo_perm.cmd_group.all()
# user_runas = sudo_perm.user_runas
# comment = sudo_perm.comment
# else:
# sudo_perm = SudoPerm(user_group=user_group, user_runas=user_runas, comment=comment)
# sudo_perm.save()
# sudo_perm.asset_group = asset_groups_select_list
# sudo_perm.cmd_group = cmd_groups_select_list
# asset_group_permed = []
# cmd_group_permed = []
#
# asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed]
# cmd_groups = [cmd_group for cmd_group in cmd_group_all if cmd_group not in cmd_group_permed]
#
# else:
# user_group_id = request.POST.get('user_group_id', '')
# users_runas = request.POST.get('runas', 'root')
# asset_groups_select = request.POST.getlist('asset_groups_select')
# cmd_groups_select = request.POST.getlist('cmd_groups_select')
# comment = request.POST.get('comment', '')
# user_group = UserGroup.objects.filter(id=user_group_id)
# if not validate(request, user_group=[user_group_id], asset_group=asset_groups_select):
# return render_to_response('/jperm/sudo_list/')
# if user_group:
# user_group = user_group[0]
# if LDAP_ENABLE:
# sudo_update(user_group, users_runas, asset_groups_select, cmd_groups_select, comment)
# msg = '修改成功'
#
# return HttpResponseRedirect('/jperm/sudo_list/')
# return render_to_response('jperm/sudo_edit.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def sudo_detail(request):
# header_title, path1, path2 = u'Sudo授权详情', u'授权管理', u'授权详情'
# user_group_id = request.GET.get('id')
# user_group = UserGroup.objects.filter(id=user_group_id)
# if user_group:
# asset_groups = []
# cmd_groups = []
# user_group = user_group[0]
# users = user_group.user_set.all()
# group_user_num = len(users)
#
# for perm in user_group.sudoperm_set.all():
# asset_groups.extend(perm.asset_group.all())
# cmd_groups.extend(perm.cmd_group.all())
#
# print asset_groups
# return render_to_response('jperm/sudo_detail.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def sudo_refresh(request):
# sudo_perm_all = SudoPerm.objects.all()
# for sudo_perm in sudo_perm_all:
# user_group = sudo_perm.user_group
# user_runas = sudo_perm.user_runas
# asset_groups_select = sudo_perm.asset_group.all()
# cmd_groups_select = sudo_perm.cmd_group.all()
# sudo_ldap_add(user_group, user_runas, asset_groups_select, cmd_groups_select)
# return HttpResponse('刷新sudo授权成功')
#
#
# @require_super_user
# def cmd_add(request):
# header_title, path1, path2 = u'sudo命令添加', u'授权管理', u'命令组添加'
# dept_all = DEPT.objects.all()
#
# if request.method == 'POST':
# name = request.POST.get('name')
# dept_id = request.POST.get('dept_id')
# cmd = ','.join(request.POST.get('cmd').split('\n'))
# comment = request.POST.get('comment')
# dept = DEPT.objects.filter(id=dept_id)
#
# try:
# if CmdGroup.objects.filter(name=name):
# error = '%s 命令组已存在'
# raise ServerError(error)
#
# if not dept:
# error = u"部门不能为空"
# raise ServerError(error)
# except ServerError, e:
# pass
# else:
# dept = dept[0]
# CmdGroup.objects.create(name=name, dept=dept, cmd=cmd, comment=comment)
# msg = u'命令组添加成功'
# return HttpResponseRedirect('/jperm/cmd_list/')
#
# return render_to_response('jperm/sudo_cmd_add.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def cmd_add_adm(request):
# header_title, path1, path2 = u'sudo命令添加', u'授权管理', u'命令组添加'
# user, dept = get_session_user_dept(request)
#
# if request.method == 'POST':
# name = request.POST.get('name')
# cmd = ','.join(request.POST.get('cmd').split('\n'))
# comment = request.POST.get('comment')
#
# try:
# if CmdGroup.objects.filter(name=name):
# error = '%s 命令组已存在'
# raise ServerError(error)
# except ServerError, e:
# pass
# else:
# CmdGroup.objects.create(name=name, dept=dept, cmd=cmd, comment=comment)
# return HttpResponseRedirect('/jperm/cmd_list/')
#
# return HttpResponseRedirect('/jperm/cmd_list/')
#
# return render_to_response('jperm/sudo_cmd_add.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def cmd_edit(request):
# header_title, path1, path2 = u'sudo命令修改', u'授权管理管理', u'命令组修改'
#
# cmd_group_id = request.GET.get('id')
# cmd_group = CmdGroup.objects.filter(id=cmd_group_id)
# dept_all = DEPT.objects.all()
#
# if cmd_group:
# cmd_group = cmd_group[0]
# cmd_group_id = cmd_group.id
# dept_id = cmd_group.dept.id
# name = cmd_group.name
# cmd = '\n'.join(cmd_group.cmd.split(','))
# comment = cmd_group.comment
#
# if request.method == 'POST':
# cmd_group_id = request.POST.get('cmd_group_id')
# name = request.POST.get('name')
# dept_id = request.POST.get('dept_id')
# cmd = ','.join(request.POST.get('cmd').split())
# comment = request.POST.get('comment')
# cmd_group = CmdGroup.objects.filter(id=cmd_group_id)
#
# dept = DEPT.objects.filter(id=dept_id)
# try:
# if not dept:
# error = '没有该部门'
# raise ServerError(error)
#
# if not cmd_group:
# error = '没有该命令组'
# except ServerError, e:
# pass
# else:
# cmd_group.update(name=name, cmd=cmd, dept=dept[0], comment=comment)
# return HttpResponseRedirect('/jperm/cmd_list/')
# return render_to_response('jperm/sudo_cmd_add.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def cmd_list(request):
# header_title, path1, path2 = u'sudo命令查看', u'权限管理', u'Sudo命令添加'
#
# if is_super_user(request):
# cmd_groups = contact_list = CmdGroup.objects.all()
# else:
# user, dept = get_session_user_dept(request)
# cmd_groups = contact_list = dept.cmdgroup_set.all()
# p = paginator = Paginator(contact_list, 10)
#
# try:
# page = int(request.GET.get('page', '1'))
# except ValueError:
# page = 1
#
# try:
# contacts = paginator.page(page)
# except (EmptyPage, InvalidPage):
# contacts = paginator.page(paginator.num_pages)
# return render_to_response('jperm/sudo_cmd_list.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def cmd_del(request):
# cmd_group_id = request.GET.get('id')
# cmd_group = CmdGroup.objects.filter(id=cmd_group_id)
#
# if cmd_group:
# cmd_group[0].delete()
# return HttpResponseRedirect('/jperm/cmd_list/')
#
#
# @require_admin
# def cmd_detail(request):
# cmd_ids = request.GET.get('id').split(',')
# cmds = []
# if len(cmd_ids) == 1:
# if cmd_ids[0]:
# cmd_id = cmd_ids[0]
# else:
# cmd_id = 1
# cmd_group = CmdGroup.objects.filter(id=cmd_id)
# if cmd_group:
# cmd_group = cmd_group[0]
# cmds.extend(cmd_group.cmd.split(','))
# cmd_group_name = cmd_group.name
# else:
# cmd_groups = []
# for cmd_id in cmd_ids:
# cmd_groups.extend(CmdGroup.objects.filter(id=cmd_id))
# for cmd_group in cmd_groups:
# cmds.extend(cmd_group.cmd.split(','))
#
# cmds_str = ', '.join(cmds)
#
# return render_to_response('jperm/sudo_cmd_detail.html', locals(), context_instance=RequestContext(request))
#
#
# @require_login
# def perm_apply(request):
# """ 权限申请 """
# header_title, path1, path2 = u'主机权限申请', u'权限管理', u'申请主机'
# user_id, username = get_session_user_info(request)[0:2]
# name = User.objects.get(id=user_id).username
# dept_id, deptname, dept = get_session_user_info(request)[3:6]
# perm_host = user_perm_asset_api(username)
# all_host = Asset.objects.filter(dept=dept)
#
# perm_group = user_perm_group_api(username)
# all_group = dept.bisgroup_set.all()
#
# posts = [g for g in all_host if g not in perm_host]
# egroup = [d for d in all_group if d not in perm_group]
#
# dept_da = User.objects.filter(dept_id=dept_id, role='DA')
# admin = User.objects.get(name='admin')
#
# if request.method == 'POST':
# applyer = request.POST.get('applyer')
# dept = request.POST.get('dept')
# da = request.POST.get('da')
# group = request.POST.getlist('group')
# hosts = request.POST.getlist('hosts')
# comment = request.POST.get('comment')
# if not da:
# return httperror(request, u'请选择管理员!')
# da = User.objects.get(id=da)
# mail_address = da.email
# mail_title = '%s - 权限申请' % username
# group_lis = ', '.join(group)
# hosts_lis = ', '.join(hosts)
# time_now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# a = Apply.objects.create(applyer=applyer, admin=da, dept=dept, bisgroup=group, date_add=datetime.datetime.now(),
# asset=hosts, status=0, comment=comment, read=0)
# uuid = a.uuid
# url = "http://%s:%s/jperm/apply_exec/?uuid=%s" % (SEND_IP, SEND_PORT, uuid)
# mail_msg = """
# Hi,%s:
# 有新的权限申请, 详情如下:
# 申请人: %s
# 申请主机组: %s
# 申请的主机: %s
# 申请时间: %s
# 申请说明: %s
# 请及时审批, 审批完成后, 点击以下链接或登录授权管理-权限审批页面点击确认键,告知申请人。
#
# %s
# """ % (da.username, applyer, group_lis, hosts_lis, time_now, comment, url)
#
# send_mail(mail_title, mail_msg, MAIL_FROM, [mail_address], fail_silently=False)
# smg = "提交成功,已发邮件至 %s 通知部门管理员。" % mail_address
# return render_to_response('jperm/perm_apply.html', locals(), context_instance=RequestContext(request))
# return render_to_response('jperm/perm_apply.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def perm_apply_exec(request):
# """ 确认权限 """
# header_title, path1, path2 = u'主机权限申请', u'权限管理', u'审批完成'
# uuid = request.GET.get('uuid')
# user_id = request.session.get('user_id')
# approver = User.objects.get(id=user_id).name
# if uuid:
# p_apply = Apply.objects.filter(uuid=str(uuid))
# q_apply = Apply.objects.get(uuid=str(uuid))
# if q_apply.status == 1:
# smg = '此权限已经审批完成, 请勿重复审批, 十秒钟后返回首页'
# return render_to_response('jperm/perm_apply_exec.html', locals(), context_instance=RequestContext(request))
# else:
# user = User.objects.get(username=q_apply.applyer)
# mail_address = user.email
# time_now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# p_apply.update(status=1, approver=approver, date_end=time_now)
# mail_title = '%s - 权限审批完成' % q_apply.applyer
# mail_msg = """
# Hi,%s:
# 您所申请的权限已由 %s 在 %s 审批完成, 请登录验证。
# """ % (q_apply.applyer, q_apply.approver, time_now)
# send_mail(mail_title, mail_msg, MAIL_FROM, [mail_address], fail_silently=False)
# smg = '授权完成, 已邮件通知申请人, 十秒钟后返回首页'
# return render_to_response('jperm/perm_apply_exec.html', locals(), context_instance=RequestContext(request))
# else:
# smg = '没有此授权记录, 十秒钟后返回首页'
# return render_to_response('jperm/perm_apply_exec.html', locals(), context_instance=RequestContext(request))
#
#
# def get_apply_posts(request, status, username, dept_name, keyword=None):
# """ 获取申请记录 """
# post_all = Apply.objects.filter(status=status).order_by('-date_add')
# post_keyword_all = Apply.objects.filter(Q(applyer__contains=keyword) |
# Q(approver__contains=keyword)) \
# .filter(status=status).order_by('-date_add')
#
# if is_super_user(request):
# if keyword:
# posts = post_keyword_all
# else:
# posts = post_all
# elif is_group_admin(request):
# if keyword:
# posts = post_keyword_all.filter(dept=dept_name)
# else:
# posts = post_all.filter(dept=dept_name)
# elif is_common_user(request):
# if keyword:
# posts = post_keyword_all.filter(applyer=username)
# else:
# posts = post_all.filter(applyer=username)
#
# return posts
#
#
# @require_login
# def perm_apply_log(request, offset):
# """ 申请记录 """
# header_title, path1, path2 = u'权限申请记录', u'权限管理', u'申请记录'
# keyword = request.GET.get('keyword', '')
# user_id = get_session_user_info(request)[0]
# username = User.objects.get(id=user_id).name
# dept_name = get_session_user_info(request)[4]
# status_dic = {'online': 0, 'offline': 1}
# status = status_dic[offset]
# posts = get_apply_posts(request, status, username, dept_name, keyword)
# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
# return render_to_response('jperm/perm_log_%s.html' % offset, locals(), context_instance=RequestContext(request))
#
#
# @require_login
# def perm_apply_info(request):
# """ 申请信息详情 """
# uuid = request.GET.get('uuid', '')
# post = Apply.objects.filter(uuid=uuid)
# username = get_session_user_info(request)[1]
# if post:
# post = post[0]
# if post.read == 0 and post.applyer != username:
# post.read = 1
# post.save()
# else:
# return httperror(request, u'没有这个申请记录!')
#
# return render_to_response('jperm/perm_apply_info.html', locals(), context_instance=RequestContext(request))
#
#
# @require_admin
# def perm_apply_del(request):
# """ 删除日志记录 """
# uuid = request.GET.get('uuid')
# u_apply = Apply.objects.filter(uuid=uuid)
# if u_apply:
# u_apply.delete()
# return HttpResponseRedirect('/jperm/apply_show/online/')
#
#
# @require_login
# def perm_apply_search(request):
# """ 申请搜索 """
# keyword = request.GET.get('keyword')
# offset = request.GET.get('env')
# username = get_session_user_info(request)[1]
# dept_name = get_session_user_info(request)[3]
# status_dic = {'online': 0, 'offline': 1}
# status = status_dic[offset]
# posts = get_apply_posts(request, status, username, dept_name, keyword)
# contact_list, p, contacts, page_range, current_page, show_first, show_end = pages(posts, request)
# return render_to_response('jperm/perm_apply_search.html', locals(), context_instance=RequestContext(request))
#
#
#
#
#
#
#
#
#
#
#
#
#
#
# sudo_ldap_add(user_group, user_runas, asset_groups_select_list, cmd_groups_select_list)
@require_super_user
def
sudo_list
(
request
):
header_title
,
path1
,
path2
=
u'Sudo授权'
,
u'权限管理'
,
u'Sudo权限详情'
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
contact_list
=
UserGroup
.
objects
.
all
()
.
order_by
(
'name'
)
if
keyword
:
contact_list
=
contact_list
.
filter
(
Q
(
name__icontains
=
keyword
)
|
Q
(
comment__icontains
=
keyword
))
contact_list
,
p
,
contacts
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
contact_list
,
request
)
return
render_to_response
(
'jperm/sudo_list.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
sudo_list_adm
(
request
):
header_title
,
path1
,
path2
=
u'Sudo授权'
,
u'权限管理'
,
u'Sudo权限详情'
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
user
,
dept
=
get_session_user_dept
(
request
)
contact_list
=
dept
.
usergroup_set
.
all
()
.
order_by
(
'name'
)
if
keyword
:
contact_list
=
contact_list
.
filter
(
Q
(
name__icontains
=
keyword
)
|
Q
(
comment__icontains
=
keyword
))
contact_list
,
p
,
contacts
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
contact_list
,
request
)
return
render_to_response
(
'jperm/sudo_list.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_super_user
def
sudo_edit
(
request
):
header_title
,
path1
,
path2
=
u'Sudo授权'
,
u'授权管理'
,
u'Sudo授权'
if
request
.
method
==
'GET'
:
user_group_id
=
request
.
GET
.
get
(
'id'
,
'0'
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
asset_group_all
=
BisGroup
.
objects
.
filter
()
cmd_group_all
=
CmdGroup
.
objects
.
all
()
if
user_group
:
user_group
=
user_group
[
0
]
sudo_perm
=
user_group
.
sudoperm_set
.
all
()
if
sudo_perm
:
sudo_perm
=
sudo_perm
[
0
]
asset_group_permed
=
sudo_perm
.
asset_group
.
all
()
cmd_group_permed
=
sudo_perm
.
cmd_group
.
all
()
user_runas
=
sudo_perm
.
user_runas
comment
=
sudo_perm
.
comment
else
:
asset_group_permed
=
[]
cmd_group_permed
=
[]
asset_groups
=
[
asset_group
for
asset_group
in
asset_group_all
if
asset_group
not
in
asset_group_permed
]
cmd_groups
=
[
cmd_group
for
cmd_group
in
cmd_group_all
if
cmd_group
not
in
cmd_group_permed
]
else
:
user_group_id
=
request
.
POST
.
get
(
'user_group_id'
,
''
)
users_runas
=
request
.
POST
.
get
(
'runas'
)
if
request
.
POST
.
get
(
'runas'
)
else
'root'
asset_groups_select
=
request
.
POST
.
getlist
(
'asset_groups_select'
)
cmd_groups_select
=
request
.
POST
.
getlist
(
'cmd_groups_select'
)
comment
=
request
.
POST
.
get
(
'comment'
,
''
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
if
user_group
:
user_group
=
user_group
[
0
]
if
LDAP_ENABLE
:
sudo_update
(
user_group
,
users_runas
,
asset_groups_select
,
cmd_groups_select
,
comment
)
msg
=
'修改成功'
return
HttpResponseRedirect
(
'/jperm/sudo_list/'
)
return
render_to_response
(
'jperm/sudo_edit.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
sudo_edit_adm
(
request
):
header_title
,
path1
,
path2
=
u'Sudo授权'
,
u'授权管理'
,
u'Sudo授权'
user
,
dept
=
get_session_user_dept
(
request
)
if
request
.
method
==
'GET'
:
user_group_id
=
request
.
GET
.
get
(
'id'
,
'0'
)
if
not
validate
(
request
,
user_group
=
[
user_group_id
]):
return
render_to_response
(
'/jperm/sudo_list/'
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
asset_group_all
=
dept
.
bisgroup_set
.
all
()
cmd_group_all
=
dept
.
cmdgroup_set
.
all
()
if
user_group
:
user_group
=
user_group
[
0
]
sudo_perm
=
user_group
.
sudoperm_set
.
all
()
if
sudo_perm
:
sudo_perm
=
sudo_perm
[
0
]
asset_group_permed
=
sudo_perm
.
asset_group
.
all
()
cmd_group_permed
=
sudo_perm
.
cmd_group
.
all
()
user_runas
=
sudo_perm
.
user_runas
comment
=
sudo_perm
.
comment
else
:
asset_group_permed
=
[]
cmd_group_permed
=
[]
asset_groups
=
[
asset_group
for
asset_group
in
asset_group_all
if
asset_group
not
in
asset_group_permed
]
cmd_groups
=
[
cmd_group
for
cmd_group
in
cmd_group_all
if
cmd_group
not
in
cmd_group_permed
]
else
:
user_group_id
=
request
.
POST
.
get
(
'user_group_id'
,
''
)
users_runas
=
request
.
POST
.
get
(
'runas'
,
'root'
)
asset_groups_select
=
request
.
POST
.
getlist
(
'asset_groups_select'
)
cmd_groups_select
=
request
.
POST
.
getlist
(
'cmd_groups_select'
)
comment
=
request
.
POST
.
get
(
'comment'
,
''
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
if
not
validate
(
request
,
user_group
=
[
user_group_id
],
asset_group
=
asset_groups_select
):
return
render_to_response
(
'/jperm/sudo_list/'
)
if
user_group
:
user_group
=
user_group
[
0
]
if
LDAP_ENABLE
:
sudo_update
(
user_group
,
users_runas
,
asset_groups_select
,
cmd_groups_select
,
comment
)
msg
=
'修改成功'
return
HttpResponseRedirect
(
'/jperm/sudo_list/'
)
return
render_to_response
(
'jperm/sudo_edit.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
sudo_detail
(
request
):
header_title
,
path1
,
path2
=
u'Sudo授权详情'
,
u'授权管理'
,
u'授权详情'
user_group_id
=
request
.
GET
.
get
(
'id'
)
user_group
=
UserGroup
.
objects
.
filter
(
id
=
user_group_id
)
if
user_group
:
asset_groups
=
[]
cmd_groups
=
[]
user_group
=
user_group
[
0
]
users
=
user_group
.
user_set
.
all
()
group_user_num
=
len
(
users
)
for
perm
in
user_group
.
sudoperm_set
.
all
():
asset_groups
.
extend
(
perm
.
asset_group
.
all
())
cmd_groups
.
extend
(
perm
.
cmd_group
.
all
())
print
asset_groups
return
render_to_response
(
'jperm/sudo_detail.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
sudo_refresh
(
request
):
sudo_perm_all
=
SudoPerm
.
objects
.
all
()
for
sudo_perm
in
sudo_perm_all
:
user_group
=
sudo_perm
.
user_group
user_runas
=
sudo_perm
.
user_runas
asset_groups_select
=
sudo_perm
.
asset_group
.
all
()
cmd_groups_select
=
sudo_perm
.
cmd_group
.
all
()
sudo_ldap_add
(
user_group
,
user_runas
,
asset_groups_select
,
cmd_groups_select
)
return
HttpResponse
(
'刷新sudo授权成功'
)
@require_super_user
def
cmd_add
(
request
):
header_title
,
path1
,
path2
=
u'sudo命令添加'
,
u'授权管理'
,
u'命令组添加'
dept_all
=
DEPT
.
objects
.
all
()
if
request
.
method
==
'POST'
:
name
=
request
.
POST
.
get
(
'name'
)
dept_id
=
request
.
POST
.
get
(
'dept_id'
)
cmd
=
','
.
join
(
request
.
POST
.
get
(
'cmd'
)
.
split
(
'
\n
'
))
comment
=
request
.
POST
.
get
(
'comment'
)
dept
=
DEPT
.
objects
.
filter
(
id
=
dept_id
)
try
:
if
CmdGroup
.
objects
.
filter
(
name
=
name
):
error
=
'
%
s 命令组已存在'
raise
ServerError
(
error
)
if
not
dept
:
error
=
u"部门不能为空"
raise
ServerError
(
error
)
except
ServerError
,
e
:
pass
else
:
dept
=
dept
[
0
]
CmdGroup
.
objects
.
create
(
name
=
name
,
dept
=
dept
,
cmd
=
cmd
,
comment
=
comment
)
msg
=
u'命令组添加成功'
return
HttpResponseRedirect
(
'/jperm/cmd_list/'
)
return
render_to_response
(
'jperm/sudo_cmd_add.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
cmd_add_adm
(
request
):
header_title
,
path1
,
path2
=
u'sudo命令添加'
,
u'授权管理'
,
u'命令组添加'
user
,
dept
=
get_session_user_dept
(
request
)
if
request
.
method
==
'POST'
:
name
=
request
.
POST
.
get
(
'name'
)
cmd
=
','
.
join
(
request
.
POST
.
get
(
'cmd'
)
.
split
(
'
\n
'
))
comment
=
request
.
POST
.
get
(
'comment'
)
try
:
if
CmdGroup
.
objects
.
filter
(
name
=
name
):
error
=
'
%
s 命令组已存在'
raise
ServerError
(
error
)
except
ServerError
,
e
:
pass
else
:
CmdGroup
.
objects
.
create
(
name
=
name
,
dept
=
dept
,
cmd
=
cmd
,
comment
=
comment
)
return
HttpResponseRedirect
(
'/jperm/cmd_list/'
)
return
HttpResponseRedirect
(
'/jperm/cmd_list/'
)
return
render_to_response
(
'jperm/sudo_cmd_add.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
cmd_edit
(
request
):
header_title
,
path1
,
path2
=
u'sudo命令修改'
,
u'授权管理管理'
,
u'命令组修改'
cmd_group_id
=
request
.
GET
.
get
(
'id'
)
cmd_group
=
CmdGroup
.
objects
.
filter
(
id
=
cmd_group_id
)
dept_all
=
DEPT
.
objects
.
all
()
if
cmd_group
:
cmd_group
=
cmd_group
[
0
]
cmd_group_id
=
cmd_group
.
id
dept_id
=
cmd_group
.
dept
.
id
name
=
cmd_group
.
name
cmd
=
'
\n
'
.
join
(
cmd_group
.
cmd
.
split
(
','
))
comment
=
cmd_group
.
comment
if
request
.
method
==
'POST'
:
cmd_group_id
=
request
.
POST
.
get
(
'cmd_group_id'
)
name
=
request
.
POST
.
get
(
'name'
)
dept_id
=
request
.
POST
.
get
(
'dept_id'
)
cmd
=
','
.
join
(
request
.
POST
.
get
(
'cmd'
)
.
split
())
comment
=
request
.
POST
.
get
(
'comment'
)
cmd_group
=
CmdGroup
.
objects
.
filter
(
id
=
cmd_group_id
)
dept
=
DEPT
.
objects
.
filter
(
id
=
dept_id
)
try
:
if
not
dept
:
error
=
'没有该部门'
raise
ServerError
(
error
)
if
not
cmd_group
:
error
=
'没有该命令组'
except
ServerError
,
e
:
pass
else
:
cmd_group
.
update
(
name
=
name
,
cmd
=
cmd
,
dept
=
dept
[
0
],
comment
=
comment
)
return
HttpResponseRedirect
(
'/jperm/cmd_list/'
)
return
render_to_response
(
'jperm/sudo_cmd_add.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
cmd_list
(
request
):
header_title
,
path1
,
path2
=
u'sudo命令查看'
,
u'权限管理'
,
u'Sudo命令添加'
if
is_super_user
(
request
):
cmd_groups
=
contact_list
=
CmdGroup
.
objects
.
all
()
else
:
user
,
dept
=
get_session_user_dept
(
request
)
cmd_groups
=
contact_list
=
dept
.
cmdgroup_set
.
all
()
p
=
paginator
=
Paginator
(
contact_list
,
10
)
try
:
page
=
int
(
request
.
GET
.
get
(
'page'
,
'1'
))
except
ValueError
:
page
=
1
try
:
contacts
=
paginator
.
page
(
page
)
except
(
EmptyPage
,
InvalidPage
):
contacts
=
paginator
.
page
(
paginator
.
num_pages
)
return
render_to_response
(
'jperm/sudo_cmd_list.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
cmd_del
(
request
):
cmd_group_id
=
request
.
GET
.
get
(
'id'
)
cmd_group
=
CmdGroup
.
objects
.
filter
(
id
=
cmd_group_id
)
if
cmd_group
:
cmd_group
[
0
]
.
delete
()
return
HttpResponseRedirect
(
'/jperm/cmd_list/'
)
@require_admin
def
cmd_detail
(
request
):
cmd_ids
=
request
.
GET
.
get
(
'id'
)
.
split
(
','
)
cmds
=
[]
if
len
(
cmd_ids
)
==
1
:
if
cmd_ids
[
0
]:
cmd_id
=
cmd_ids
[
0
]
else
:
cmd_id
=
1
cmd_group
=
CmdGroup
.
objects
.
filter
(
id
=
cmd_id
)
if
cmd_group
:
cmd_group
=
cmd_group
[
0
]
cmds
.
extend
(
cmd_group
.
cmd
.
split
(
','
))
cmd_group_name
=
cmd_group
.
name
else
:
cmd_groups
=
[]
for
cmd_id
in
cmd_ids
:
cmd_groups
.
extend
(
CmdGroup
.
objects
.
filter
(
id
=
cmd_id
))
for
cmd_group
in
cmd_groups
:
cmds
.
extend
(
cmd_group
.
cmd
.
split
(
','
))
cmds_str
=
', '
.
join
(
cmds
)
return
render_to_response
(
'jperm/sudo_cmd_detail.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_login
def
perm_apply
(
request
):
""" 权限申请 """
header_title
,
path1
,
path2
=
u'主机权限申请'
,
u'权限管理'
,
u'申请主机'
user_id
,
username
=
get_session_user_info
(
request
)[
0
:
2
]
name
=
User
.
objects
.
get
(
id
=
user_id
)
.
username
dept_id
,
deptname
,
dept
=
get_session_user_info
(
request
)[
3
:
6
]
perm_host
=
user_perm_asset_api
(
username
)
all_host
=
Asset
.
objects
.
filter
(
dept
=
dept
)
perm_group
=
user_perm_group_api
(
username
)
all_group
=
dept
.
bisgroup_set
.
all
()
posts
=
[
g
for
g
in
all_host
if
g
not
in
perm_host
]
egroup
=
[
d
for
d
in
all_group
if
d
not
in
perm_group
]
dept_da
=
User
.
objects
.
filter
(
dept_id
=
dept_id
,
role
=
'DA'
)
admin
=
User
.
objects
.
get
(
name
=
'admin'
)
if
request
.
method
==
'POST'
:
applyer
=
request
.
POST
.
get
(
'applyer'
)
dept
=
request
.
POST
.
get
(
'dept'
)
da
=
request
.
POST
.
get
(
'da'
)
group
=
request
.
POST
.
getlist
(
'group'
)
hosts
=
request
.
POST
.
getlist
(
'hosts'
)
comment
=
request
.
POST
.
get
(
'comment'
)
if
not
da
:
return
httperror
(
request
,
u'请选择管理员!'
)
da
=
User
.
objects
.
get
(
id
=
da
)
mail_address
=
da
.
email
mail_title
=
'
%
s - 权限申请'
%
username
group_lis
=
', '
.
join
(
group
)
hosts_lis
=
', '
.
join
(
hosts
)
time_now
=
datetime
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
a
=
Apply
.
objects
.
create
(
applyer
=
applyer
,
admin
=
da
,
dept
=
dept
,
bisgroup
=
group
,
date_add
=
datetime
.
datetime
.
now
(),
asset
=
hosts
,
status
=
0
,
comment
=
comment
,
read
=
0
)
uuid
=
a
.
uuid
url
=
"http://
%
s:
%
s/jperm/apply_exec/?uuid=
%
s"
%
(
SEND_IP
,
SEND_PORT
,
uuid
)
mail_msg
=
"""
Hi,
%
s:
有新的权限申请, 详情如下:
申请人:
%
s
申请主机组:
%
s
申请的主机:
%
s
申请时间:
%
s
申请说明:
%
s
请及时审批, 审批完成后, 点击以下链接或登录授权管理-权限审批页面点击确认键,告知申请人。
%
s
"""
%
(
da
.
username
,
applyer
,
group_lis
,
hosts_lis
,
time_now
,
comment
,
url
)
send_mail
(
mail_title
,
mail_msg
,
MAIL_FROM
,
[
mail_address
],
fail_silently
=
False
)
smg
=
"提交成功,已发邮件至
%
s 通知部门管理员。"
%
mail_address
return
render_to_response
(
'jperm/perm_apply.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
return
render_to_response
(
'jperm/perm_apply.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
perm_apply_exec
(
request
):
""" 确认权限 """
header_title
,
path1
,
path2
=
u'主机权限申请'
,
u'权限管理'
,
u'审批完成'
uuid
=
request
.
GET
.
get
(
'uuid'
)
user_id
=
request
.
session
.
get
(
'user_id'
)
approver
=
User
.
objects
.
get
(
id
=
user_id
)
.
name
if
uuid
:
p_apply
=
Apply
.
objects
.
filter
(
uuid
=
str
(
uuid
))
q_apply
=
Apply
.
objects
.
get
(
uuid
=
str
(
uuid
))
if
q_apply
.
status
==
1
:
smg
=
'此权限已经审批完成, 请勿重复审批, 十秒钟后返回首页'
return
render_to_response
(
'jperm/perm_apply_exec.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
else
:
user
=
User
.
objects
.
get
(
username
=
q_apply
.
applyer
)
mail_address
=
user
.
email
time_now
=
datetime
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
p_apply
.
update
(
status
=
1
,
approver
=
approver
,
date_end
=
time_now
)
mail_title
=
'
%
s - 权限审批完成'
%
q_apply
.
applyer
mail_msg
=
"""
Hi,
%
s:
您所申请的权限已由
%
s 在
%
s 审批完成, 请登录验证。
"""
%
(
q_apply
.
applyer
,
q_apply
.
approver
,
time_now
)
send_mail
(
mail_title
,
mail_msg
,
MAIL_FROM
,
[
mail_address
],
fail_silently
=
False
)
smg
=
'授权完成, 已邮件通知申请人, 十秒钟后返回首页'
return
render_to_response
(
'jperm/perm_apply_exec.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
else
:
smg
=
'没有此授权记录, 十秒钟后返回首页'
return
render_to_response
(
'jperm/perm_apply_exec.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
def
get_apply_posts
(
request
,
status
,
username
,
dept_name
,
keyword
=
None
):
""" 获取申请记录 """
post_all
=
Apply
.
objects
.
filter
(
status
=
status
)
.
order_by
(
'-date_add'
)
post_keyword_all
=
Apply
.
objects
.
filter
(
Q
(
applyer__contains
=
keyword
)
|
Q
(
approver__contains
=
keyword
))
\
.
filter
(
status
=
status
)
.
order_by
(
'-date_add'
)
if
is_super_user
(
request
):
if
keyword
:
posts
=
post_keyword_all
else
:
posts
=
post_all
elif
is_group_admin
(
request
):
if
keyword
:
posts
=
post_keyword_all
.
filter
(
dept
=
dept_name
)
else
:
posts
=
post_all
.
filter
(
dept
=
dept_name
)
elif
is_common_user
(
request
):
if
keyword
:
posts
=
post_keyword_all
.
filter
(
applyer
=
username
)
else
:
posts
=
post_all
.
filter
(
applyer
=
username
)
return
posts
@require_login
def
perm_apply_log
(
request
,
offset
):
""" 申请记录 """
header_title
,
path1
,
path2
=
u'权限申请记录'
,
u'权限管理'
,
u'申请记录'
keyword
=
request
.
GET
.
get
(
'keyword'
,
''
)
user_id
=
get_session_user_info
(
request
)[
0
]
username
=
User
.
objects
.
get
(
id
=
user_id
)
.
name
dept_name
=
get_session_user_info
(
request
)[
4
]
status_dic
=
{
'online'
:
0
,
'offline'
:
1
}
status
=
status_dic
[
offset
]
posts
=
get_apply_posts
(
request
,
status
,
username
,
dept_name
,
keyword
)
contact_list
,
p
,
contacts
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
posts
,
request
)
return
render_to_response
(
'jperm/perm_log_
%
s.html'
%
offset
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_login
def
perm_apply_info
(
request
):
""" 申请信息详情 """
uuid
=
request
.
GET
.
get
(
'uuid'
,
''
)
post
=
Apply
.
objects
.
filter
(
uuid
=
uuid
)
username
=
get_session_user_info
(
request
)[
1
]
if
post
:
post
=
post
[
0
]
if
post
.
read
==
0
and
post
.
applyer
!=
username
:
post
.
read
=
1
post
.
save
()
else
:
return
httperror
(
request
,
u'没有这个申请记录!'
)
return
render_to_response
(
'jperm/perm_apply_info.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
@require_admin
def
perm_apply_del
(
request
):
""" 删除日志记录 """
uuid
=
request
.
GET
.
get
(
'uuid'
)
u_apply
=
Apply
.
objects
.
filter
(
uuid
=
uuid
)
if
u_apply
:
u_apply
.
delete
()
return
HttpResponseRedirect
(
'/jperm/apply_show/online/'
)
@require_login
def
perm_apply_search
(
request
):
""" 申请搜索 """
keyword
=
request
.
GET
.
get
(
'keyword'
)
offset
=
request
.
GET
.
get
(
'env'
)
username
=
get_session_user_info
(
request
)[
1
]
dept_name
=
get_session_user_info
(
request
)[
3
]
status_dic
=
{
'online'
:
0
,
'offline'
:
1
}
status
=
status_dic
[
offset
]
posts
=
get_apply_posts
(
request
,
status
,
username
,
dept_name
,
keyword
)
contact_list
,
p
,
contacts
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
posts
,
request
)
return
render_to_response
(
'jperm/perm_apply_search.html'
,
locals
(),
context_instance
=
RequestContext
(
request
))
This diff is collapsed.
Click to expand it.
jumpserver/urls.py
View file @
907c2c7e
...
...
@@ -16,7 +16,7 @@ urlpatterns = patterns('',
(
r'^juser/'
,
include
(
'juser.urls'
)),
(
r'^jasset/'
,
include
(
'jasset.urls'
)),
# (r'^jlog/', include('jlog.urls')),
#
(r'^jperm/', include('jperm.urls')),
(
r'^jperm/'
,
include
(
'jperm.urls'
)),
(
r'^node_auth/'
,
'jumpserver.views.node_auth'
),
)
This diff is collapsed.
Click to expand it.
juser/urls.py
View file @
907c2c7e
...
...
@@ -10,7 +10,6 @@ urlpatterns = patterns('juser.views',
(
r'^group_add/$'
,
group_add
),
(
r'^group_list/$'
,
group_list
),
(
r'^group_del/$'
,
group_del
),
(
r'^group_del_ajax'
,
group_del_ajax
),
(
r'^group_edit/$'
,
group_edit
),
(
r'^user_add/$'
,
user_add
),
(
r'^user_list/$'
,
user_list
),
...
...
@@ -19,8 +18,7 @@ urlpatterns = patterns('juser.views',
(
r'^forget_password/$'
,
forget_password
),
(
r'^user_detail/$'
,
'user_detail'
),
(
r'^user_del/$'
,
'user_del'
),
(
r'^user_del_ajax/$'
,
'user_del_ajax'
),
(
r'^user_edit/$'
,
view_splitter
,
{
'su'
:
user_edit
,
'adm'
:
user_edit_adm
}),
(
r'^user_edit/$'
,
user_edit
),
(
r'^profile/$'
,
'profile'
),
(
r'^change_info/$'
,
'change_info'
),
(
r'^regen_ssh_key/$'
,
'regen_ssh_key'
),
...
...
This diff is collapsed.
Click to expand it.
juser/views.py
View file @
907c2c7e
...
...
@@ -81,21 +81,14 @@ def group_del(request):
del a group
删除用户组
"""
group_id
=
request
.
GET
.
get
(
'id'
,
''
)
if
not
group_id
:
return
HttpResponseRedirect
(
'/'
)
group_id
s
=
request
.
GET
.
get
(
'id'
,
''
)
group_id_list
=
group_ids
.
split
(
','
)
for
group_id
in
group_id_list
:
UserGroup
.
objects
.
filter
(
id
=
group_id
)
.
delete
()
return
HttpResponseRedirect
(
'/juser/group_list/'
)
@require_role
(
role
=
'super'
)
def
group_del_ajax
(
request
):
group_ids
=
request
.
POST
.
get
(
'group_ids'
)
group_ids
=
group_ids
.
split
(
','
)
for
group_id
in
group_ids
:
UserGroup
.
objects
.
filter
(
id
=
group_id
)
.
delete
()
return
HttpResponse
(
'删除成功'
)
# @require_role(role='admin')
# def group_list_adm(request):
# header_title, path1, path2 = '查看部门小组', '用户管理', '查看小组'
...
...
@@ -424,30 +417,10 @@ def user_detail(request):
@require_role
(
role
=
'admin'
)
def
user_del
(
request
):
user_id
=
request
.
GET
.
get
(
'id'
,
''
)
if
not
user_id
:
return
HttpResponseRedirect
(
'/juser/user_list/'
)
user
=
get_object
(
User
,
id
=
user_id
)
if
user
and
user
.
username
!=
'admin'
:
user
.
delete
()
server_del_user
(
user
.
username
)
return
HttpResponseRedirect
(
'/juser/user_list/'
)
@require_role
(
role
=
'admin'
)
def
user_del_ajax
(
request
):
user_ids
=
request
.
POST
.
get
(
'ids'
)
user_ids
=
user_ids
.
split
(
','
)
if
request
.
session
.
get
(
'role_id'
,
''
)
==
1
:
if
not
validate
(
request
,
user
=
user_ids
):
return
"error"
for
user_id
in
user_ids
:
user
=
get_object
(
User
,
id
=
user_id
)
if
user
and
user
.
username
!=
'admin'
:
user
.
delete
()
server_del_user
(
user
.
username
)
user_ids
=
request
.
GET
.
get
(
'id'
,
''
)
user_id_list
=
user_ids
.
split
(
','
)
for
user_id
in
user_id_list
:
User
.
objects
.
filter
(
id
=
user_id
)
.
delete
()
return
HttpResponse
(
'删除成功'
)
...
...
This diff is collapsed.
Click to expand it.
templates/jasset/asset_add.html
View file @
907c2c7e
...
...
@@ -80,8 +80,8 @@
<label
for=
"groups"
class=
"col-sm-2 control-label"
>
所属主机组
</label>
<div
class=
"col-sm-8"
>
<select
id=
"groups"
name=
"groups"
class=
"form-control m-b"
multiple
size=
"10"
>
{% for
g in egroup
%}
<option
type=
"checkbox"
value=
"{{
g.id }}"
>
{{ g.name }} {% if g.comment %} --- {{ g
.comment }} {% endif %}
</option>
{% for
asset_group in asset_group_all
%}
<option
type=
"checkbox"
value=
"{{
asset_group.id }}"
>
{{ asset_group.name }} {% if asset_group.comment %} --- {{ asset_group
.comment }} {% endif %}
</option>
{% endfor %}
</select>
</div>
...
...
This diff is collapsed.
Click to expand it.
templates/jasset/dept_host_ajax.html
deleted
100644 → 0
View file @
960e45d0
{% for host in hosts %}
<option
value=
"{{ host.id }}"
>
{{ host.ip }}
</option>
{% endfor %}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
templates/jasset/group_list.html
View file @
907c2c7e
...
...
@@ -24,6 +24,7 @@
<div
class=
"ibox-content"
>
<div
class=
""
>
<a
target=
"_blank"
href=
"/jasset/group_add/"
class=
"btn btn-sm btn-primary "
>
添加主机组
</a>
<a
target=
"_blank"
class=
"btn btn-sm btn-danger"
id=
"del_check"
>
删除所选
</a>
<form
id=
"search_form"
method=
"get"
action=
""
class=
"pull-right mail-search"
>
<div
class=
"input-group"
>
<input
type=
"text"
class=
"form-control input-sm"
id=
"search_input"
name=
"keyword"
placeholder=
"Search"
>
...
...
@@ -54,15 +55,15 @@
{% for asset_group in asset_groups.object_list %}
<tr
class=
"gradeX"
>
<td
class=
"text-center"
name=
"id"
value=
"{{ asset_group.id }}"
data-editable=
'false'
>
<input
name=
"id"
value=
"{{
post
.id }}"
type=
"checkbox"
class=
"i-checks"
>
<input
name=
"id"
value=
"{{
asset_group
.id }}"
type=
"checkbox"
class=
"i-checks"
>
</td>
<td
class=
"text-center"
>
{{ asset_group.name }}
</td>
<td
class=
"text-center"
>
<a
href=
"/jasset/group_detail/?id={{
post
.id }}"
>
{{ asset_group.asset_set.count }}
</a>
</td>
<td
class=
"text-center"
>
<a
href=
"/jasset/group_detail/?id={{
asset_group
.id }}"
>
{{ asset_group.asset_set.count }}
</a>
</td>
<td
class=
"text-center"
>
{{ asset_group.comment }}
</td>
<td
class=
"text-center"
>
<a
href=
"/jasset/group_detail/?id={{
post
.id }}"
class=
"btn btn-xs btn-info"
>
详情
</a>
<a
href=
"/jasset/group_edit/?id={{
post
.id }}"
class=
"btn btn-xs btn-info"
>
编辑
</a>
<a
href=
"/jasset/group_del/?id={{ post.id }}
"
class=
"btn btn-xs btn-danger"
>
删除
</a>
<a
href=
"/jasset/group_detail/?id={{
asset_group
.id }}"
class=
"btn btn-xs btn-info"
>
详情
</a>
<a
href=
"/jasset/group_edit/?id={{
asset_group
.id }}"
class=
"btn btn-xs btn-info"
>
编辑
</a>
<a
value=
"/jasset/group_del/?id={{ asset_group.id }}"
id=
"del
"
class=
"btn btn-xs btn-danger"
>
删除
</a>
</td>
</tr>
{% endfor %}
...
...
@@ -70,8 +71,9 @@
</table>
<div
class=
"row"
>
<div
class=
"col-sm-6"
>
<input
type=
"button"
id=
"del_button"
class=
"btn btn-danger btn-sm"
name=
"del_button"
value=
"删除"
onclick=
"del('contents_form')"
/>
<!--<input type="button" id="alter_button" class="btn btn-warning btn-sm" name="alter_button" value="修改" onclick="alter('contents_form')" />-->
<div
class=
"dataTables_info"
id=
"editable_info"
role=
"status"
aria-live=
"polite"
>
Showing {{ asset_groups.start_index }} to {{ asset_groups.end_index }} of {{ p.count }} entries
</div>
</div>
{% include 'paginator.html' %}
</div>
...
...
@@ -81,29 +83,43 @@
</div>
</div>
</div>
{% endblock %}
{% block self_footer_js %}
<script>
function
del
(
form
)
{
var
checkboxes
=
document
.
getElementById
(
form
);
var
id_list
=
{};
var
j
=
0
;
for
(
var
i
=
0
;
i
<
checkboxes
.
elements
.
length
;
i
++
)
{
if
(
checkboxes
.
elements
[
i
].
type
==
"checkbox"
&&
checkboxes
.
elements
[
i
].
checked
==
true
&&
checkboxes
.
elements
[
i
].
value
!=
"checkall"
)
{
id_list
[
j
]
=
checkboxes
.
elements
[
i
].
value
;
j
++
;
}
}
if
(
confirm
(
"确定删除"
))
{
$
.
ajax
({
type
:
"POST"
,
url
:
"/jasset/group_del/?id=multi"
,
data
:
{
"id_list"
:
id_list
,
"len_list"
:
j
},
success
:
function
(
data
)
{
window
.
open
(
"/jasset/group_list/"
,
"_self"
);
$
(
document
).
ready
(
function
(){
$
(
'#del'
).
click
(
function
(){
var
row
=
$
(
this
).
closest
(
'tr'
);
$
.
get
(
$
(
this
).
attr
(
'value'
),
{},
function
(
data
){
row
.
remove
();
alert
(
data
)
}
)
});
$
(
'#del_check'
).
click
(
function
(){
var
check_array
=
[];
if
(
confirm
(
'确定删除'
)){
$
(
'tr.gradeX input:checked'
).
each
(
function
(){
check_array
.
push
(
$
(
this
).
attr
(
'value'
))
});
$
.
get
(
'/jasset/group_del/'
,
{
id
:
check_array
.
join
(
','
)},
function
(
data
){
$
(
'tr.gradeX input:checked'
).
closest
(
'tr'
).
remove
();
alert
(
data
);
}
)
}
})
});
</script>
{% endblock %}
This diff is collapsed.
Click to expand it.
templates/juser/group_list.html
View file @
907c2c7e
...
...
@@ -26,7 +26,7 @@
<div
class=
"ibox-content"
>
<div
class=
""
>
<a
target=
"_blank"
href=
"/juser/group_add/"
class=
"btn btn-sm btn-primary "
>
添加用户组
</a>
<a
id=
"del_btn"
class=
"btn btn-sm btn-danger "
>
删除所选
组
</a>
<a
id=
"del_btn"
class=
"btn btn-sm btn-danger "
>
删除所选
</a>
<form
id=
"search_form"
method=
"get"
action=
""
class=
"pull-right mail-search"
>
<div
class=
"input-group"
>
<input
type=
"text"
class=
"form-control input-sm"
id=
"search_input"
name=
"search"
placeholder=
"Search"
>
...
...
@@ -62,7 +62,7 @@
<td
class=
"text-center"
>
{{ group.comment }}
</td>
<td
class=
"text-center"
>
<a
href=
"../group_edit/?id={{ group.id }}"
class=
"btn btn-xs btn-info"
>
编辑
</a>
<a
href=
"../group_del/?id={{ group.id }}"
class=
"btn btn-xs btn-danger
"
>
删除
</a>
<a
value=
"../group_del/?id={{ group.id }}"
class=
"btn btn-xs btn-danger del
"
>
删除
</a>
</td>
</tr>
{% endfor %}
...
...
@@ -71,7 +71,7 @@
<div
class=
"row"
>
<div
class=
"col-sm-6"
>
<div
class=
"dataTables_info"
id=
"editable_info"
role=
"status"
aria-live=
"polite"
>
Showing {{
contacts.start_index }} to {{ contact
s.end_index }} of {{ p.count }} entries
Showing {{
user_groups.start_index }} to {{ user_group
s.end_index }} of {{ p.count }} entries
</div>
</div>
{% include 'paginator.html' %}
...
...
@@ -86,14 +86,27 @@
{% block self_footer_js %}
<script>
$
(
document
).
ready
(
function
(){
var
check_array
=
[];
$
(
'.del'
).
click
(
function
(){
var
row
=
$
(
this
).
closest
(
'tr'
);
$
.
get
(
$
(
this
).
attr
(
'value'
),
{},
function
(
data
){
row
.
remove
();
alert
(
data
);
}
)
});
$
(
'#del_btn'
).
click
(
function
(){
var
check_array
=
[];
if
(
confirm
(
"确定删除"
))
{
$
(
".gradeX input:checked"
).
each
(
function
()
{
check_array
.
push
(
$
(
this
).
attr
(
"value"
))
});
$
.
post
(
"/juser/group_del_ajax
/"
,
{
group_ids
:
check_array
.
join
(
","
)},
$
.
get
(
"/juser/group_del
/"
,
{
id
:
check_array
.
join
(
","
)},
function
(
result
){
alert
(
result
);
$
(
".gradeX input:checked"
).
closest
(
"tr"
).
remove
();
...
...
This diff is collapsed.
Click to expand it.
templates/juser/user_list.html
View file @
907c2c7e
...
...
@@ -69,7 +69,7 @@
<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
href=
"../user_del/?id={{ user.id }}"
class=
"btn btn-xs btn-danger
{% if user.username == 'admin' %} disabled {% endif %}"
>
删除
</a>
<a
value=
"../user_del/?id={{ user.id }}"
class=
"btn btn-xs btn-danger del
{% if user.username == 'admin' %} disabled {% endif %}"
>
删除
</a>
</td>
</tr>
{% endfor %}
...
...
@@ -93,32 +93,29 @@
{% block self_head_css_js %}
<script>
$
(
document
).
ready
(
function
(){
{
#
$
(
".iframe"
).
on
(
'click'
,
function
()
{
#
}
{
#
var
url
=
$
(
this
).
attr
(
"value"
);
#
}
{
#
$
.
layer
({
#
}
{
#
type
:
2
,
#
}
{
#
title
:
'用户详情'
,
#
}
{
#
maxmin
:
true
,
#
}
{
#
shift
:
'top'
,
#
}
{
#
border
:
[
2
,
0.3
,
'#1AB394'
],
#
}
{
#
shade
:
[
0.5
,
'#000000'
],
#
}
{
#
shadeClose
:
true
,
#
}
{
#
area
:
[
'800px'
,
'600px'
],
#
}
{
#
iframe
:
{
src
:
url
}
#
}
{
#
})
#
}
{
#
});
#
}
$
(
'.del'
).
click
(
function
(){
var
row
=
$
(
this
).
closest
(
'tr'
);
$
.
get
(
$
(
this
).
attr
(
'value'
),
{},
function
(
data
){
row
.
remove
();
alert
(
data
);
}
)
});
var
check_array
=
[];
$
(
'#del_btn'
).
click
(
function
(){
var
check_array
=
[];
if
(
confirm
(
"确定删除"
))
{
$
(
".gradeX input:checked"
).
each
(
function
()
{
check_array
.
push
(
$
(
this
).
attr
(
"value"
))
});
$
.
post
(
"/juser/user_del
_ajax
/"
,
{
id
s
:
check_array
.
join
(
","
)},
$
.
post
(
"/juser/user_del/"
,
{
id
:
check_array
.
join
(
","
)},
function
(
data
){
$
(
".gradeX input:checked"
).
closest
(
"tr"
).
remove
();
window
.
open
(
"/juser/user_list/"
,
"_self"
);
alert
(
data
);
}
)
}
...
...
This diff is collapsed.
Click to expand it.
templates/nav.html
View file @
907c2c7e
...
...
@@ -28,15 +28,15 @@
<a
href=
"#"
><i
class=
"fa fa-edit"
></i>
<span
class=
"nav-label"
>
授权管理
</span><span
class=
"fa arrow"
></span></a>
<ul
class=
"nav nav-second-level"
>
<li
class=
"dept_perm_list dept_perm_edit"
>
<a
href=
"/jperm/
dept_perm_list/"
>
部门
授权
</a>
<a
href=
"/jperm/
user/"
>
用户
授权
</a>
</li>
<li
class=
"perm_list perm_edit perm_detail"
>
<a
href=
"/jperm/perm_list/"
>
小
组授权
</a>
<a
href=
"/jperm/perm_list/"
>
用户
组授权
</a>
</li>
<li
class=
"sudo_list sudo_edit sudo_add cmd_list cmd_edit cmd_add sudo_detail"
>
<a
href=
"/jperm/sudo_list/"
>
Sudo
授权
</a>
<a
href=
"/jperm/sudo_list/"
>
命令
授权
</a>
</li>
<li
class=
"apply_show online"
><a
href=
"/jperm/apply_show/online/"
>
权限审批
</a></li>
</ul>
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment