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
2d65265f
Commit
2d65265f
authored
Nov 24, 2015
by
ibuler
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of git.coding.net:jumpserver/jumpserver into dev
parents
30fe9f52
49821062
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
99 additions
and
40 deletions
+99
-40
models.py
jasset/models.py
+1
-1
views.py
jasset/views.py
+18
-12
cmdb_excel_2015_11_20_00_04.xlsx
static/files/excels/cmdb_excel_2015_11_20_00_04.xlsx
+0
-0
asset_add.html
templates/jasset/asset_add.html
+33
-13
asset_edit.html
templates/jasset/asset_edit.html
+28
-13
asset_list.html
templates/jasset/asset_list.html
+18
-0
error.html
templates/jasset/error.html
+1
-1
No files found.
jasset/models.py
View file @
2d65265f
...
...
@@ -57,7 +57,7 @@ class Asset(models.Model):
"""
asset modle
"""
ip
=
models
.
GenericIPAddressField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u"主机IP"
)
ip
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"主机IP"
)
other_ip
=
models
.
CharField
(
max_length
=
255
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"其他IP"
)
hostname
=
models
.
CharField
(
unique
=
True
,
max_length
=
128
,
verbose_name
=
u"主机名"
)
port
=
models
.
IntegerField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u"端口号"
)
...
...
jasset/views.py
View file @
2d65265f
...
...
@@ -130,6 +130,7 @@ def asset_add(request):
af
=
AssetForm
()
if
request
.
method
==
'POST'
:
af_post
=
AssetForm
(
request
.
POST
)
print
af_post
ip
=
request
.
POST
.
get
(
'ip'
,
''
)
hostname
=
request
.
POST
.
get
(
'hostname'
,
''
)
is_active
=
True
if
request
.
POST
.
get
(
'is_active'
)
==
'1'
else
False
...
...
@@ -211,12 +212,11 @@ def asset_edit(request):
password
=
request
.
POST
.
get
(
'password'
,
''
)
is_active
=
True
if
request
.
POST
.
get
(
'is_active'
)
==
'1'
else
False
use_default_auth
=
request
.
POST
.
get
(
'use_default_auth'
,
''
)
try
:
asset_test
=
get_object
(
Asset
,
hostname
=
hostname
)
if
asset_test
and
asset_id
!=
unicode
(
asset_test
.
id
):
e
rror
=
u'该主机名
%
s 已存在!'
%
hostname
raise
ServerError
(
e
rror
)
e
mg
=
u'该主机名
%
s 已存在!'
%
hostname
raise
ServerError
(
e
mg
)
except
ServerError
:
pass
else
:
...
...
@@ -225,6 +225,7 @@ def asset_edit(request):
if
use_default_auth
:
af_save
.
username
=
''
af_save
.
password
=
''
af_save
.
port
=
None
else
:
if
password_old
!=
password
:
password_encode
=
CRYPTOR
.
encrypt
(
password
)
...
...
@@ -237,9 +238,10 @@ def asset_edit(request):
info
=
asset_diff
(
af_post
.
__dict__
.
get
(
'initial'
),
request
.
POST
)
db_asset_alert
(
asset
,
username
,
info
)
ms
g
=
u'主机
%
s 修改成功'
%
ip
sm
g
=
u'主机
%
s 修改成功'
%
ip
else
:
emg
=
u'主机
%
s 修改失败'
%
ip
return
my_render
(
'jasset/error.html'
,
locals
(),
request
)
return
HttpResponseRedirect
(
'/jasset/asset_detail/?id=
%
s'
%
asset_id
)
return
my_render
(
'jasset/asset_edit.html'
,
locals
(),
request
)
...
...
@@ -414,21 +416,25 @@ def asset_update(request):
if
not
asset
:
return
HttpResponseRedirect
(
'/jasset/asset_detail/?id=
%
s'
%
asset_id
)
else
:
asset_ansible_update
(
asset_list
,
name
)
asset_ansible_update
(
[
asset
]
,
name
)
return
HttpResponseRedirect
(
'/jasset/asset_detail/?id=
%
s'
%
asset_id
)
@require_role
(
'admin'
)
def
asset_update_batch
(
request
):
if
request
.
method
==
'POST'
:
a
sset_list
=
[]
a
rg
=
request
.
GET
.
get
(
'arg'
,
''
)
name
=
unicode
(
request
.
user
.
username
)
+
' - '
+
u'自动更新'
asset_id_all
=
unicode
(
request
.
POST
.
get
(
'asset_id_all'
,
''
))
asset_id_all
=
asset_id_all
.
split
(
','
)
for
asset_id
in
asset_id_all
:
asset
=
get_object
(
Asset
,
id
=
asset_id
)
if
asset
:
asset_list
.
append
(
asset
)
if
arg
==
'all'
:
asset_list
=
Asset
.
objects
.
all
()
else
:
asset_list
=
[]
asset_id_all
=
unicode
(
request
.
POST
.
get
(
'asset_id_all'
,
''
))
asset_id_all
=
asset_id_all
.
split
(
','
)
for
asset_id
in
asset_id_all
:
asset
=
get_object
(
Asset
,
id
=
asset_id
)
if
asset
:
asset_list
.
append
(
asset
)
asset_ansible_update
(
asset_list
,
name
)
return
HttpResponse
(
u'批量更新成功!'
)
return
HttpResponse
(
u'批量更新成功!'
)
...
...
static/files/excels/cmdb_excel_2015_11_20_00_04.xlsx
0 → 100644
View file @
2d65265f
File added
templates/jasset/asset_add.html
View file @
2d65265f
...
...
@@ -55,7 +55,7 @@
<div
class=
"col-sm-2"
>
<div
class=
"radio i-checks"
>
<label>
<input
type=
"checkbox"
checked=
""
id=
"id_use_default_auth"
name=
"use_default_auth"
><span>
使用默认
</span>
<input
type=
"checkbox"
checked=
"
checked
"
id=
"id_use_default_auth"
name=
"use_default_auth"
><span>
使用默认
</span>
</label>
</div>
</div>
...
...
@@ -142,26 +142,46 @@
rules
:
{
check_ip
:
[
/^
(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])(\.(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])){3}
$/
,
'ip地址不正确'
],
check_port
:
[
/^
\d{1,5}
$/
,
'端口号不正确'
],
use_default_auth
:
function
()
{
var
str1
=
$
(
"#id_use_default_auth"
).
is
(
":checked"
);
if
(
str1
==
true
){
var
decide
=
false
;
}
else
{
var
decide
=
true
;
}
return
decide
}
},
fields
:
{
{
#
"ip"
:
{
#
}
{
#
rule
:
"required;check_ip"
,
#
}
{
#
tip
:
"输入IP"
,
#
}
{
#
ok
:
""
,
#
}
{
#
msg
:
{
required
:
"必须填写!"
}
#
}
{
#
},
#
}
"ip"
:
{
rule
:
"check_ip;"
,
tip
:
"输入IP"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
},
"hostname"
:
{
rule
:
"required"
,
tip
:
"填写主机名"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
},
{
#
"port"
:
{
#
}
{
#
rule
:
"required;check_port"
,
#
}
{
#
tip
:
"输入端口号"
,
#
}
{
#
ok
:
""
,
#
}
{
#
msg
:
{
required
:
"必须填写!"
}
#
}
{
#
}
#
}
"port"
:
{
rule
:
"required(use_default_auth)"
,
tip
:
"输入端口号"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
},
"username"
:
{
rule
:
"required(use_default_auth)"
,
tip
:
"输入用户名"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
},
"password"
:
{
rule
:
"required(use_default_auth)"
,
tip
:
"输入密码"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
}
},
valid
:
function
(
form
)
{
form
.
submit
();
...
...
templates/jasset/asset_edit.html
View file @
2d65265f
...
...
@@ -55,7 +55,7 @@
<div
class=
"col-sm-2"
>
<div
class=
"radio i-checks"
>
<label>
<input
type=
"checkbox"
{%
if
asset
.
use_default_auth
%}
checked=
""
{%
endif
%}
id=
"id_use_default_auth"
name=
"use_default_auth"
><span>
使用默认
</span>
<input
type=
"checkbox"
{%
if
asset
.
use_default_auth
%}
checked=
"
checked
"
{%
endif
%}
id=
"id_use_default_auth"
name=
"use_default_auth"
><span>
使用默认
</span>
</label>
</div>
</div>
...
...
@@ -186,12 +186,20 @@
$
(
'label[for="'
+
field
+
'"]'
).
parent
().
addClass
(
"required"
);
});
$
(
'#assetForm'
).
validator
({
$
(
'#assetForm'
).
validator
({
timely
:
2
,
theme
:
"yellow_right_effect"
,
rules
:
{
check_ip
:
[
/^
(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])(\.(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])){3}
$/
,
'ip地址不正确'
],
check_port
:
[
/^
\d{1,5}
$/
,
'端口号不正确'
],
use_default_auth
:
function
()
{
var
str1
=
$
(
"#id_use_default_auth"
).
is
(
":checked"
);
if
(
str1
==
true
){
var
decide
=
false
;
}
else
{
var
decide
=
true
;
}
return
decide
}
},
fields
:
{
"hostname"
:
{
...
...
@@ -200,17 +208,24 @@
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
},
{
#
"ip"
:
{
#
}
{
#
rule
:
"required;check_ip"
,
#
}
{
#
tip
:
"输入IP"
,
#
}
{
#
ok
:
""
,
#
}
{
#
msg
:
{
required
:
"必须填写!"
}
#
}
{
#
},
#
}
{
#
"port"
:
{
#
}
{
#
rule
:
"required;check_port"
,
#
}
{
#
tip
:
"输入端口号"
,
#
}
{
#
ok
:
""
,
#
}
{
#
msg
:
{
required
:
"必须填写!"
}
#
}
"port"
:
{
rule
:
"required(use_default_auth)"
,
tip
:
"输入端口号"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
},
"username"
:
{
rule
:
"required(use_default_auth)"
,
tip
:
"输入用户名"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
},
"password"
:
{
rule
:
"required(use_default_auth)"
,
tip
:
"输入密码"
,
ok
:
""
,
msg
:
{
required
:
"必须填写!"
}
}
},
valid
:
function
(
form
)
{
form
.
submit
();
...
...
templates/jasset/asset_list.html
View file @
2d65265f
...
...
@@ -143,6 +143,7 @@
<input
type=
"button"
id=
"asset_del"
class=
"btn btn-danger btn-sm"
name=
"del_button"
value=
"删除"
/>
<a
value=
"/jasset/asset_edit_batch/"
type=
"button"
class=
"btn btn-sm btn-warning iframe"
>
修改
</a>
<input
type=
"button"
id=
"asset_update"
class=
"btn btn-info btn-sm"
name=
"update_button"
value=
"更新"
/>
<input
type=
"button"
id=
"asset_update_all"
class=
"btn btn-primary btn-sm"
name=
"update_button"
value=
"更新全部"
/>
</div>
{% include 'paginator.html' %}
</div>
...
...
@@ -281,6 +282,23 @@
});
});
{
#
function
update_tips
(){
#
}
{
#
layer
.
tips
(
'我是另外一个tips,只不过我长得跟之前那位稍有些不一样。'
,
'吸附元素选择器'
,
{
#
}
{
#
tips
:
[
1
,
'#3595CC'
],
#
}
{
#
time
:
4000
#
}
{
#
});
#
}
{
#
}
#
}
$
(
'#asset_update_all'
).
click
(
function
()
{
layer
.
msg
(
'玩命更新中...'
,
{
time
:
200000
});
$
.
ajax
({
type
:
"post"
,
url
:
"/jasset/asset_update_batch/?arg=all"
,
success
:
function
()
{
parent
.
location
.
reload
();
}
});
});
function
change_info
(){
var
args
=
$
(
"#asset_form"
).
serialize
();
...
...
templates/jasset/error.html
View file @
2d65265f
{% for field in af %}
{% for field in af
_form
%}
<div
class=
"alert alert-warning text-center"
>
{{ field.errors }}
</div>
{{ field.label_tag }}: {{ field }}
{% endfor %}
...
...
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