Commit 159398b3 authored by root's avatar root

fix bugs

parent 0c0f05b6
# coding: utf-8
import xlsxwriter
from jumpserver.api import *
......@@ -171,3 +173,62 @@ def db_asset_update(**kwargs):
# else:
# return httperror(request, '删除失败, 没有这个IDC!')
SERVER_STATUS = {1: u"已安装系统", 2: u"未安装系统", 3: u"正在安装系统", 4: u"报废"}
now = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M')
file_name = 'cmdb_excel_' + now + '.xlsx'
workbook = xlsxwriter.Workbook('static/excels/%s' % file_name)
worksheet = workbook.add_worksheet('CMDB数据')
worksheet.set_first_sheet()
worksheet.set_column('A:Z', 15)
def write_excel(hosts):
data = []
title = [u'主机名', u'IP', u'IDC', u'MAC', u'远控IP', u'CPU', u'内存', u'硬盘', u'操作系统', u'机柜位置',
u'资产编号', u'所属业务', u'机器状态', u'SN', u'运行服务', u'备注']
for host in hosts:
projects_list, services_list = [], []
for p in host.project.all():
projects_list.append(p.name)
for s in host.service.all():
print s.name, s.port
services_list.append(s.name + '-' + str(s.port))
projects = '/'.join(projects_list)
services = '/'.join(services_list)
status = SERVER_STATUS.get(int(host.status))
info = [host.hostname, host.eth1, host.idc.name, host.mac, host.remote_ip, host.cpu, host.memory,
host.disk, host.system_type, host.cabinet, host.number, projects, status,
host.sn, services, host.comment]
data.append(info)
print data
format = workbook.add_format()
format.set_border(1)
format.set_align('center')
format_title = workbook.add_format()
format_title.set_border(1)
format_title.set_bg_color('#cccccc')
format_title.set_align('center')
format_title.set_bold()
format_ave = workbook.add_format()
format_ave.set_border(1)
format_ave.set_num_format('0.00')
worksheet.write_row('A1', title, format_title)
i = 2
for info in data:
location = 'A' + str(i)
worksheet.write_row(location, info, format)
i += 1
workbook.close()
ret = (True, file_name)
return ret
def sort_ip_list(ip_list):
""" ip地址排序 """
ip_list.sort(key=lambda s: map(int, s.split('.')))
return ip_list
\ No newline at end of file
......@@ -4,6 +4,23 @@ import datetime
from django.db import models
from juser.models import User, UserGroup
ENVIRONMENT = (
(0, U'生产环境'),
(1, U'测试环境')
)
ASSET_STATUS = (
(0, u"已使用"),
(1, u"未使用"),
(2, u"报废")
)
ASSET_TYPE = (
(0, u"服务器"),
(2, u"网络设备"),
(3, u"其他")
)
class AssetGroup(models.Model):
GROUP_TYPE = (
......@@ -83,21 +100,6 @@ class Asset(models.Model):
"""
asset modle
"""
ENVIRONMENT = (
(0, U'生产环境'),
(1, U'测试环境')
)
SERVER_STATUS = (
(0, u"已使用"),
(1, u"未使用"),
(2, u"报废")
)
ASSET_TYPE = (
(0, u"服务器"),
(2, u"网络设备"),
(3, u"其他")
)
ip = models.IPAddressField(unique=True, verbose_name=u"主机IP")
second_ip = models.CharField(max_length=255, blank=True, null=True, verbose_name=u"其他IP")
hostname = models.CharField(max_length=64, blank=True, null=True, verbose_name=u"主机名")
......@@ -118,7 +120,7 @@ class Asset(models.Model):
cabinet = models.CharField(max_length=32, blank=True, null=True, verbose_name=u'机柜号')
position = models.IntegerField(max_length=2, blank=True, null=True, verbose_name=u'机器位置')
number = models.CharField(max_length=32, blank=True, null=True, verbose_name=u'资产编号')
status = models.IntegerField(max_length=2, choices=SERVER_STATUS, blank=True, null=True, default=1, verbose_name=u"机器状态")
status = models.IntegerField(max_length=2, choices=ASSET_STATUS, blank=True, null=True, default=1, verbose_name=u"机器状态")
asset_type = models.IntegerField(max_length=2, choices=ASSET_TYPE, blank=True, null=True, verbose_name=u"主机类型")
env = models.IntegerField(max_length=2, choices=ENVIRONMENT, blank=True, null=True, verbose_name=u"运行环境")
sn = models.CharField(max_length=32, blank=True, null=True, verbose_name=u"SN编号")
......@@ -129,22 +131,6 @@ class Asset(models.Model):
def __unicode__(self):
return self.ip
def get_user(self):
perm_list = []
asset_group_all = self.bis_group.all()
for asset_group in asset_group_all:
perm_list.extend(asset_group.perm_set.all())
user_group_list = []
for perm in perm_list:
user_group_list.append(perm.user_group)
user_permed_list = []
for user_group in user_group_list:
user_permed_list.extend(user_group.user_set.all())
user_permed_list = list(set(user_permed_list))
return user_permed_list
class AssetAlias(models.Model):
user = models.ForeignKey(User)
......
......@@ -12,6 +12,7 @@ urlpatterns = patterns('',
url(r'^asset_del/$', asset_del),
url(r"^asset_detail/$", asset_detail),
url(r'^asset_edit/$', asset_edit),
url(r'^asset_search/$', asset_search),
# url(r'^search/$', host_search),
# url(r"^host_detail/$", host_detail),
# url(r"^dept_host_ajax/$", dept_host_ajax),
......
This diff is collapsed.
......@@ -119,3 +119,11 @@ function selectAll(){
// })
//}
function getIDall() {
var check_array = [];
$(".gradeX input:checked").each(function () {
var id = $(this).attr("value");
check_array.push(id);
});
return check_array.join(",");
}
\ No newline at end of file
......@@ -23,22 +23,31 @@
</div>
<div class="ibox-content">
<form id="asset_form">
<div class="col-sm-2" style="padding-left: 0px">
<label>
<select name="change_idc" class="form-control m-b" onchange="change_info()">
<select name="idc" class="form-control m-b" onchange="change_info()">
<option value="">IDC机房</option>
{% for i in idcs %}
<option value="{{i.name}}"> {{ i }}</option>
{% for idc in idc_all %}
{% ifequal idc.name idc_name %}
<option value="{{idc.name}}" selected> {{ idc.name }}</option>
{% else %}
<option value="{{idc.name}}"> {{ idc.name }}</option>
{% endifequal %}
{% endfor %}
</select>
</label>
</div>
<div class="col-sm-2">
<label>
<select name="change_project" class="form-control m-b" onchange="change_info()">
<select name="group" class="form-control m-b" onchange="change_info()">
<option value="all">主机组</option>
{% for i in projects %}
<option value="{{ i.name }}"> {{ i.name }} </option>
{% for asset_group in asset_group_all %}
{% ifequal asset_group.name group_name %}
<option value="{{ asset_group.name }}" selected> {{ asset_group.name }} </option>
{% else %}
<option value="{{ asset_group.name }}"> {{ asset_group.name }} </option>
{% endifequal %}
{% endfor %}
</select>
</label>
......@@ -46,20 +55,28 @@
<div class="col-sm-2">
<label>
<select name="change_type" class="form-control m-b" onchange="change_info()">
<select name="server_type" class="form-control m-b" onchange="change_info()">
<option value="">所有类型</option>
{% for i in server_type %}
<option value="{{ i.0 }}"> {{ i.1 }}</option>
{% for type in asset_type %}
{% ifequal type.0|int2str asset_type %}
<option value="{{ type.0 }}" selected> {{ type.1 }}</option>
{% else %}
<option value="{{ type.0 }}"> {{ type.1 }}</option>
{% endifequal %}
{% endfor %}
</select>
</label>
</div>
<div class="col-sm-2">
<label>
<select name="change_type" class="form-control m-b" onchange="change_info()">
<select name="status" class="form-control m-b" onchange="change_info()">
<option value="">状态</option>
{% for i in server_type %}
<option value="{{ i.0 }}"> {{ i.1 }}</option>
{% for status in asset_status %}
{% ifequal status.0|int2str status %}
<option value="{{ status.0 }}" selected> {{ status.1 }}</option>
{% else %}
<option value="{{ status.0 }}"> {{ status.1 }}</option>
{% endifequal %}
{% endfor %}
</select>
</label>
......@@ -78,7 +95,6 @@
</form>
</div>
<form id="contents_form" name="contents_form">
<table class="table table-striped table-bordered table-hover " id="editable" name="editable">
<thead>
<tr>
......@@ -119,13 +135,13 @@
</table>
<div class="row">
<div class="col-sm-6">
<input type="button" id="del_button" class="btn btn-danger btn-sm" name="del_button" value="删除" onclick="del('contents_form')" />
<input type="button" id="asset_del" class="btn btn-danger btn-sm" name="del_button" value="删除"/>
<input type="button" id="alter_button" class="btn btn-warning btn-sm" name="alter_button" value="修改" onclick="alter('contents_form')" />
</div>
{% include 'paginator.html' %}
</div>
</form>
</div>
</form>
</div>
</div>
</div>
......@@ -180,38 +196,31 @@
}
}
function del(form) {
var checkboxes = document.getElementById(form);
var id_list = {};
var j = 0;
for (var i = 0; i < checkboxes.elements.length; i++) {
if (checkboxes.elements[i].type == "checkbox" && checkboxes.elements[i].checked == true && checkboxes.elements[i].value != "checkall") {
id_list[j] = checkboxes.elements[i].value;
j++;
}
$('#asset_del').click(function () {
var asset_id_all = getIDall();
console.log(asset_id_all);
if (asset_id_all == ''){
alert("请至少选择一行!");
return false;
}
if (confirm("确定删除")) {
$.ajax({
type: "POST",
url: "/jasset/host_del/multi/",
data: {"id_list": id_list, "len_list": j},
success: function (data) {
window.open("/jasset/host_list/", "_self");
type: "post",
data: {asset_id_all: asset_id_all},
url: "/jasset/asset_del/?arg=batch",
success: function () {
window.open("/jasset/asset_list/", "_self");
}
});
}
});
function change_info(){
var args = $("#asset_form").serialize();
window.location = "/jasset/asset_search/?" + args
}
{# function host_search(){#}
{# $.ajax({#}
{# type: "GET",#}
{# url: "/jasset/search/",#}
{# data: $("#search_form").serialize(),#}
{# success: function (data) {#}
{# $("#contents_form").html(data);#}
{# }#}
{# });#}
{# }#}
$("#search_input").keydown(function(e){
if(e.keyCode==13){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment