From d42197db3ab0be4a3c908a8c388cc4f18c162660 Mon Sep 17 00:00:00 2001 From: halcyon <864072399@qq.com> Date: Tue, 17 Nov 2015 23:34:13 +0800 Subject: [PATCH] fix tower bugs --- jasset/asset_api.py | 2 +- jasset/models.py | 4 +- jasset/views.py | 22 ++++++---- .../excels/cmdb_excel_2015_11_17_22_38.xlsx | Bin 0 -> 4990 bytes .../excels/cmdb_excel_2015_11_17_22_39.xlsx | Bin 0 -> 4990 bytes .../excels/cmdb_excel_2015_11_17_23_19.xlsx | Bin 0 -> 4990 bytes templates/jasset/asset_detail.html | 38 +++++++++--------- templates/jasset/asset_list.html | 8 ++-- templates/jasset/group_add.html | 12 +++--- templates/jasset/group_detail.html | 14 +++---- templates/jasset/group_edit.html | 4 +- templates/nav.html | 2 +- 12 files changed, 57 insertions(+), 49 deletions(-) create mode 100644 static/files/excels/cmdb_excel_2015_11_17_22_38.xlsx create mode 100644 static/files/excels/cmdb_excel_2015_11_17_22_39.xlsx create mode 100644 static/files/excels/cmdb_excel_2015_11_17_23_19.xlsx diff --git a/jasset/asset_api.py b/jasset/asset_api.py index 998d669c..28457437 100644 --- a/jasset/asset_api.py +++ b/jasset/asset_api.py @@ -381,13 +381,13 @@ def excel_to_db(excel_file): row = table.row_values(row_num) if row: ip, port, hostname, use_default_auth, username, password, group = row - print ip use_default_auth = 1 if use_default_auth == u'默认' else 0 if get_object(Asset, ip=ip): continue if ip and port: asset = Asset(ip=ip, port=port, + hostname=hostname, use_default_auth=use_default_auth, username=username, password=password diff --git a/jasset/models.py b/jasset/models.py index e011302a..f1e5b46f 100644 --- a/jasset/models.py +++ b/jasset/models.py @@ -37,8 +37,8 @@ class AssetGroup(models.Model): class IDC(models.Model): name = models.CharField(max_length=32, verbose_name=u'机房åç§°') bandwidth = models.CharField(max_length=32, blank=True, null=True, verbose_name=u'机房带宽') - linkman = models.CharField(max_length=16, null=True, verbose_name=u'è”系人') - phone = models.CharField(max_length=32, verbose_name=u'è”系电è¯') + linkman = models.CharField(max_length=16, blank=True, null=True, verbose_name=u'è”系人') + phone = models.CharField(max_length=32, blank=True, null=True, verbose_name=u'è”系电è¯') address = models.CharField(max_length=128, blank=True, null=True, verbose_name=u"机房地å€") network = models.TextField(blank=True, null=True, verbose_name=u"IPåœ°å€æ®µ") date_added = models.DateField(auto_now=True, null=True) diff --git a/jasset/views.py b/jasset/views.py index 8427f9f6..6bafd566 100644 --- a/jasset/views.py +++ b/jasset/views.py @@ -2,9 +2,9 @@ import ast from django.db.models import Q -from django.shortcuts import get_object_or_404 from jasset.asset_api import * from jumpserver.api import * +from jumpserver.models import Setting from jasset.forms import AssetForm, IdcForm from jasset.models import Asset, IDC, AssetGroup, ASSET_TYPE, ASSET_STATUS from ansible_api import Tasks @@ -330,13 +330,20 @@ def asset_update(request): return HttpResponseRedirect('/jasset/asset_detail/?id=%s' % asset_id) name = request.session.get('username', 'admin') if asset.use_default_auth: - username = 'root' - password = '123456' + default = Setting.objects.all() + if default: + default = default[0] + username = default.default_user + password = default.default_password + port = default.default_port + else: + return HttpResponse(u'没有设置默认用户å和密ç !') else: username = asset.username password = asset.password + port = asset.port - resource = [{"hostname": asset.ip, "port": asset.port, + resource = [{"hostname": asset.ip, "port": port, "username": username, "password": password}] ansible_instance = Tasks(resource) @@ -446,9 +453,10 @@ def idc_del(request): """ IDC delete view """ - uuid = request.GET.get('uuid', '') - idc = get_object_or_404(IDC, uuid=uuid) - idc.delete() + uuid = request.GET.get('id', '') + idc = get_object(IDC, id=uuid) + if idc: + idc.delete() return HttpResponseRedirect('/jasset/idc_list/') diff --git a/static/files/excels/cmdb_excel_2015_11_17_22_38.xlsx b/static/files/excels/cmdb_excel_2015_11_17_22_38.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..705c543475c0c947a28b36483792e3b1b833512d GIT binary patch literal 4990 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 literal 0 HcmV?d00001 diff --git a/static/files/excels/cmdb_excel_2015_11_17_22_39.xlsx b/static/files/excels/cmdb_excel_2015_11_17_22_39.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..83ea97d23f2eeae373115ee6738bfbaae0d7d4ae GIT binary patch literal 4990 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 literal 0 HcmV?d00001 diff --git a/static/files/excels/cmdb_excel_2015_11_17_23_19.xlsx b/static/files/excels/cmdb_excel_2015_11_17_23_19.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..26eb983077e37f5610942199853436c035056bb7 GIT binary patch literal 4990 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 literal 0 HcmV?d00001 diff --git a/templates/jasset/asset_detail.html b/templates/jasset/asset_detail.html index 1f8d0d13..143ca6a4 100644 --- a/templates/jasset/asset_detail.html +++ b/templates/jasset/asset_detail.html @@ -31,11 +31,11 @@ <table class="table"> <tr> <td class="text-navy">IP</td> - <td>{{ asset.ip }}</td> + <td>{{ asset.ip|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">主机å</td> - <td>{{ asset.hostname }}</td> + <td>{{ asset.hostname|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">å…¶ä»–IP</td> @@ -53,11 +53,11 @@ </tr> <tr> <td class="text-navy">远控IP</td> - <td>{{ asset.remote_ip }}</td> + <td>{{ asset.remote_ip|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">端å£</td> - <td>{{ asset.port }}</td> + <td>{{ asset.port|default_if_none:"" }}</td> </tr> <tr> @@ -66,7 +66,7 @@ <table class="table"> {% for asset_group in asset.group.all %} <tr> - <td>{{ asset_group.name }}</td> + <td>{{ asset_group.name|default_if_none:"" }}</td> </tr> {% endfor %} </table> @@ -79,19 +79,19 @@ </tr> <tr> <td class="text-navy">机房</td> - <td>{{ asset.idc.name }}</td> + <td>{{ asset.idc.name|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">硬件厂商型å·</td> - <td>{{ asset.brand }}</td> + <td>{{ asset.brand|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">CPU</td> - <td>{{ asset.cpu }}</td> + <td>{{ asset.cpu|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">内å˜</td> - <td>{{ asset.memory }}M</td> + <td>{{ asset.memory|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">硬盘</td> @@ -100,7 +100,7 @@ {% if asset.disk %} {% for disk, value in asset.disk|str_to_dic %} <tr> - <td><span class="text-navy">{{ disk }}</span>     {{ value }}</td> + <td><span class="text-navy">{{ disk|default_if_none:"" }}</span>     {{ value|default_if_none:"" }}</td> </tr> {% endfor %} {% endif %} @@ -109,35 +109,35 @@ </tr> <tr> <td class="text-navy">资产编å·</td> - <td>{{ asset.number }}</td> + <td>{{ asset.number|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">SN</td> - <td>{{ asset.sn }}</td> + <td>{{ asset.sn|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">主机类型</td> - <td>{{ asset.get_asset_type_display }}</td> + <td>{{ asset.get_asset_type_display|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">系统版本</td> - <td>{{ asset.system_type }} {{ asset.system_version }}</td> + <td>{{ asset.system_type|default_if_none:"" }} {{ asset.system_version|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">è¿è¡ŒçŽ¯å¢ƒ</td> - <td>{{ asset.get_env_display }}</td> + <td>{{ asset.get_env_display|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">机器状æ€</td> - <td>{{ asset.get_status_display }}</td> + <td>{{ asset.get_status_display|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">机柜å·</td> - <td>{{ asset.cabinet }}</td> + <td>{{ asset.cabinet|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">机柜ä½ç½®</td> - <td>{{ asset.position }}</td> + <td>{{ asset.position|default_if_none:"" }}</td> </tr> <tr> <td class="text-navy">激活</td> @@ -149,7 +149,7 @@ </tr> <tr> <td class="text-navy">备注</td> - <td>{{ asset.comment }}</td> + <td>{{ asset.comment|default_if_none:"" }}</td> </tr> </table> </div> diff --git a/templates/jasset/asset_list.html b/templates/jasset/asset_list.html index 133e41ee..63eb123a 100644 --- a/templates/jasset/asset_list.html +++ b/templates/jasset/asset_list.html @@ -119,12 +119,12 @@ <td class="text-center" name="id" value="{{ asset.id }}" data-editable='false'> <input name="id" value="{{ asset.id }}" type="checkbox" class="i-checks"> </td> - <td class="text-center"> {{ asset.ip }} </td> - <td class="text-center"> {{ asset.hostname }} </td> - <td class="text-center"> {{ asset.idc.name }} </td> + <td class="text-center"> {{ asset.ip|default_if_none:"" }} </td> + <td class="text-center"> {{ asset.hostname|default_if_none:"" }} </td> + <td class="text-center"> {{ asset.idc.name|default_if_none:"" }} </td> <td class="text-center">{{ asset.group.all|group_str2 }}</td> {# <td class="text-center">{{ asset.cpu }}|{{ asset.memory }}|{{ asset.disk }}</td>#} - <td class="text-center">{{ asset.system_type }}{{ asset.system_version }}</td> + <td class="text-center">{{ asset.system_type|default_if_none:"" }}{{ asset.system_version|default_if_none:"" }}</td> <td class="text-center"> {{ asset.use_default_auth|bool2str }} </td> <td class="text-center" data-editable='false'> <a href="/jasset/asset_detail/?id={{ asset.id }}" class="btn btn-xs btn-primary">详情</a> diff --git a/templates/jasset/group_add.html b/templates/jasset/group_add.html index f5013ae1..51ffd23c 100644 --- a/templates/jasset/group_add.html +++ b/templates/jasset/group_add.html @@ -75,12 +75,12 @@ <div class="form-group"> - <label for="" class="col-sm-2 control-label">主机<span class="red-fonts">*</span></label> + <label for="" class="col-sm-2 control-label">主机</label> <div class="col-sm-4"> <div> <select id="assets" name="assets" class="form-control m-b" size="12" multiple> {% for asset in asset_all %} - <option value="{{ asset.id }}">{{ asset.ip }}</option> + <option value="{{ asset.id }}">{{ asset.hostname|default_if_none:"" }} - {{ asset.ip|default_if_none:"" }} - {{ asset.port|default_if_none:"" }}</option> {% endfor %} </select> </div> @@ -133,12 +133,12 @@ timely: 2, theme: "yellow_right_effect", fields: { - "j_group": { + "name": { rule: "required", - tip: "输入业务组å", + tip: "输入主机组å", ok: "", - msg: {required: "业务组å必须填写!"}, - data: {'data-ok':"业务组åå¯ä»¥ä½¿ç”¨"} + msg: {required: "主机组å必须填写!"}, + data: {'data-ok':"主机组åå¯ä»¥ä½¿ç”¨"} } }, valid: function(form) { diff --git a/templates/jasset/group_detail.html b/templates/jasset/group_detail.html index e31a5d69..b2b95e96 100644 --- a/templates/jasset/group_detail.html +++ b/templates/jasset/group_detail.html @@ -52,17 +52,17 @@ <tbody> {% for asset in contacts.object_list %} <tr class="gradeX"> - <td class="text-center" name="j_id" value="{{ asset.id }}" data-editable='false'><input name="id" value="{{ asset.id }}" type="checkbox" class="i-checks"></td> - <td class="text-center" name="j_ip"> {{ asset.ip }} </td> - <td class="text-center" name="j_port"> {{ asset.port }} </td> - <td class="text-center" name="j_idc"> {{ asset.idc.name }} </td> + <td class="text-center" name="j_id" value="{{ asset.id|default_if_none:"" }}" data-editable='false'><input name="id" value="{{ asset.id }}" type="checkbox" class="i-checks"></td> + <td class="text-center" name="j_ip"> {{ asset.ip|default_if_none:"" }} </td> + <td class="text-center" name="j_port"> {{ asset.port|default_if_none:"" }} </td> + <td class="text-center" name="j_idc"> {{ asset.idc.name|default_if_none:"" }} </td> <td class="text-center" name="j_group">{{ asset.bis_group.all | group_str2 }}</td> <td class="text-center" name="j_active"> {{ asset.is_active|bool2str }} </td> <td class="text-center"> {{ asset.date_added|date:"Y-m-d H:i:s" }} </td> - <td class="text-center" name="j_comment"> {{ asset.comment }} </td> + <td class="text-center" name="j_comment"> {{ asset.comment|default_if_none:"" }} </td> <td class="text-center" data-editable='false'> - <a href="/jasset/host_detail/?id={{ asset.id }}" class="iframe btn btn-xs btn-primary">详情</a> - <a href="/jasset/host_edit/?id={{ asset.id }}" class="btn btn-xs btn-info">编辑</a> + <a href="/jasset/asset_detail/?id={{ asset.id }}" class="iframe btn btn-xs btn-primary">详情</a> + <a href="/jasset/asset_edit/?id={{ asset.id }}" class="btn btn-xs btn-info">编辑</a> <a href="/jasset/group_del_host/?id={{ asset.id }}&gid={{ group.id }}" class="btn btn-xs btn-danger">åˆ é™¤</a> </td> </tr> diff --git a/templates/jasset/group_edit.html b/templates/jasset/group_edit.html index e9054cca..8cb4ca9b 100644 --- a/templates/jasset/group_edit.html +++ b/templates/jasset/group_edit.html @@ -86,7 +86,7 @@ <div> <select id="assets" name="assets" class="form-control m-b" size="12" multiple> {% for asset in asset_no_select %} - <option value="{{ asset.id }}">{{ asset.ip }}</option> + <option value="{{ asset.id }}">{{ asset.hostname|default_if_none:"" }} - {{ asset.ip|default_if_none:"" }} - {{ asset.port|default_if_none:"" }}</option> {% endfor %} </select> </div> @@ -103,7 +103,7 @@ <div> <select id="asset_select" name="asset_select" class="form-control m-b" size="12" multiple> {% for asset in asset_select %} - <option value="{{ asset.id }}">{{ asset.ip }}</option> + <option value="{{ asset.id }}">{{ asset.hostname|default_if_none:"" }} - {{ asset.ip|default_if_none:"" }} - {{ asset.port|default_if_none:"" }}</option> {% endfor %} </select> </div> diff --git a/templates/nav.html b/templates/nav.html index 3f3e76d4..97911049 100644 --- a/templates/nav.html +++ b/templates/nav.html @@ -76,7 +76,7 @@ <a><i class="fa fa-cube"></i> <span class="nav-label">资产管ç†</span><span class="fa arrow"></span></a> <ul class="nav nav-second-level"> {# <li class="host_add host_add_multi"><a href="/jasset/host_add/">æ·»åŠ èµ„äº§</a></li>#} - <li class="host_list host_detail host_edit"><a href="/jasset/asset_list/">查看资产<span class="label label-info pull-right">{{ host_active_num }}/{{ host_total_num}}</span></a></li> + <li class="asset_list asset_detail asset_edit"><a href="/jasset/asset_list/">查看资产<span class="label label-info pull-right">{{ host_active_num }}/{{ host_total_num}}</span></a></li> <li class="idc_list idc_detail idc_edit"><a href="/jasset/idc_list/">查看IDC</a></li> <li class="group_add"><a href="/jasset/group_add/">æ·»åŠ ä¸»æœºç»„</a></li> <li class="group_list group_detail group_edit"><a href="/jasset/group_list/">查看主机组</a></li> -- 2.18.0