mirror of https://github.com/jumpserver/jumpserver
Merge branch 'dev' of git.coding.net:jumpserver/jumpserver into dev
commit
2d65265fc6
|
@ -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"端口号")
|
||||
|
|
|
@ -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):
|
||||
error = u'该主机名 %s 已存在!' % hostname
|
||||
raise ServerError(error)
|
||||
emg = u'该主机名 %s 已存在!' % hostname
|
||||
raise ServerError(emg)
|
||||
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)
|
||||
|
||||
msg = u'主机 %s 修改成功' % ip
|
||||
smg = 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':
|
||||
asset_list = []
|
||||
arg = 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'批量更新成功!')
|
||||
|
|
Binary file not shown.
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{% for field in af %}
|
||||
{% for field in af_form %}
|
||||
<div class="alert alert-warning text-center"> {{ field.errors }}</div>
|
||||
{{ field.label_tag }}: {{ field }}
|
||||
{% endfor %}
|
||||
|
|
Loading…
Reference in New Issue