diff --git a/jasset/asset_api.py b/jasset/asset_api.py index 998d669c5d65346f9e3f62f5c66f3713cb8ffe38..2845743792ef9b9917822cdae3d00457d6830b78 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 e011302a2c2d500eff0d3928c6444eed06d7da1e..f1e5b46fca60b2741a6dab6d62c6c0f2fefb6e63 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 8427f9f676e40c8ace1f11e658be55a66ab2d151..6bafd5664aea509b540cfc71b98f6507c28076ad 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 Binary files /dev/null and b/static/files/excels/cmdb_excel_2015_11_17_22_38.xlsx differ 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 Binary files /dev/null and b/static/files/excels/cmdb_excel_2015_11_17_22_39.xlsx differ 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 Binary files /dev/null and b/static/files/excels/cmdb_excel_2015_11_17_23_19.xlsx differ diff --git a/templates/jasset/asset_detail.html b/templates/jasset/asset_detail.html index 1f8d0d130de32f0d0ee4b825a9b5910b97ef8903..143ca6a48dcd8f9a33dbb4a44d1b72ac8ad5333a 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 133e41eea58c9e1886da4d7606c0cd861ddfdeae..63eb123adf3aebd689cf19a44e4abf6ec9113911 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 f5013ae14193590e4028c412b6242f00c7b0732c..51ffd23c1907c287134f87ce8e28dbe80ef2b994 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 e31a5d69a8ca9dff994a58b04ecb8a41e03f8588..b2b95e9630b4197e149141798521b844da0bb1be 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 e9054ccafe6b9939b99615a9cde54a7b4c1d7280..8cb4ca9bb7026b13a253a1c15ecc87c11419dda0 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 3f3e76d421f9f9024e8ca838c0de1d233c2f9c41..979110492b16195790e7abdd213c71048980e0d8 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>