diff --git a/jasset/models.py b/jasset/models.py index 4f0ce5107..c6cbe4cb5 100644 --- a/jasset/models.py +++ b/jasset/models.py @@ -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"端口号") diff --git a/jasset/views.py b/jasset/views.py index 54bc576a7..38a7d2a3a 100644 --- a/jasset/views.py +++ b/jasset/views.py @@ -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'批量更新成功!') diff --git a/static/files/excels/cmdb_excel_2015_11_20_00_04.xlsx b/static/files/excels/cmdb_excel_2015_11_20_00_04.xlsx new file mode 100644 index 000000000..05fc5eefc Binary files /dev/null and b/static/files/excels/cmdb_excel_2015_11_20_00_04.xlsx differ diff --git a/templates/jasset/asset_add.html b/templates/jasset/asset_add.html index 35903a469..807dcd130 100644 --- a/templates/jasset/asset_add.html +++ b/templates/jasset/asset_add.html @@ -55,7 +55,7 @@
@@ -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(); diff --git a/templates/jasset/asset_edit.html b/templates/jasset/asset_edit.html index ff9552d4a..a3f9bd516 100644 --- a/templates/jasset/asset_edit.html +++ b/templates/jasset/asset_edit.html @@ -55,7 +55,7 @@
@@ -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(); diff --git a/templates/jasset/asset_list.html b/templates/jasset/asset_list.html index e6a12567d..28ab2523e 100644 --- a/templates/jasset/asset_list.html +++ b/templates/jasset/asset_list.html @@ -143,6 +143,7 @@ 修改 + {% include 'paginator.html' %} @@ -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(); diff --git a/templates/jasset/error.html b/templates/jasset/error.html index 4fa214245..3ad1bf040 100644 --- a/templates/jasset/error.html +++ b/templates/jasset/error.html @@ -1,4 +1,4 @@ -{% for field in af %} +{% for field in af_form %}
{{ field.errors }}
{{ field.label_tag }}: {{ field }} {% endfor %}