Commit 3771b2ff authored by wangyong's avatar wangyong

add asset detail and list

parent fcd39370
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-08-14 08:12 # Generated by Django 1.10 on 2016-08-21 09:52
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models
...@@ -19,26 +19,26 @@ class Migration(migrations.Migration): ...@@ -19,26 +19,26 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('ip', models.CharField(blank=True, max_length=32, verbose_name='\u4e3b\u673aIP')), ('ip', models.CharField(blank=True, max_length=32, verbose_name='\u4e3b\u673aIP')),
('other_ip', models.CharField(blank=True, max_length=255, null=True, verbose_name='\u5176\u4ed6IP')), ('other_ip', models.CharField(blank=True, max_length=255, verbose_name='\u5176\u4ed6IP')),
('remote_card_ip', models.CharField(blank=True, max_length=16, null=True, verbose_name='\u8fdc\u63a7\u5361IP')), ('remote_card_ip', models.CharField(blank=True, max_length=16, verbose_name='\u8fdc\u63a7\u5361IP')),
('hostname', models.CharField(max_length=128, unique=True, verbose_name='\u4e3b\u673a\u540d')), ('hostname', models.CharField(blank=True, max_length=128, unique=True, verbose_name='\u4e3b\u673a\u540d')),
('port', models.IntegerField(blank=True, null=True, verbose_name='\u7aef\u53e3\u53f7')), ('port', models.IntegerField(blank=True, verbose_name='\u7aef\u53e3\u53f7')),
('username', models.CharField(blank=True, max_length=16, null=True, verbose_name='\u7ba1\u7406\u7528\u6237\u540d')), ('username', models.CharField(blank=True, max_length=16, verbose_name='\u7ba1\u7406\u7528\u6237\u540d')),
('password', models.CharField(blank=True, max_length=256, null=True, verbose_name='\u5bc6\u7801')), ('password', models.CharField(blank=True, max_length=256, verbose_name='\u5bc6\u7801')),
('mac_addr', models.CharField(blank=True, max_length=20, null=True, verbose_name='MAC\u5730\u5740')), ('mac_addr', models.CharField(blank=True, max_length=20, unique=True, verbose_name='MAC\u5730\u5740')),
('brand', models.CharField(blank=True, max_length=64, null=True, verbose_name='\u786c\u4ef6\u5382\u5546\u578b\u53f7')), ('brand', models.CharField(blank=True, max_length=64, verbose_name='\u786c\u4ef6\u5382\u5546\u578b\u53f7')),
('cpu', models.CharField(blank=True, max_length=64, null=True, verbose_name='CPU')), ('cpu', models.CharField(blank=True, max_length=64, verbose_name='CPU')),
('memory', models.CharField(blank=True, max_length=128, null=True, verbose_name='\u5185\u5b58')), ('memory', models.CharField(blank=True, max_length=128, verbose_name='\u5185\u5b58')),
('disk', models.CharField(blank=True, max_length=1024, null=True, verbose_name='\u786c\u76d8')), ('disk', models.CharField(blank=True, max_length=1024, verbose_name='\u786c\u76d8')),
('os', models.CharField(blank=True, max_length=128, null=True, verbose_name='\u7cfb\u7edf\u4fe1\u606f')), ('os', models.CharField(blank=True, max_length=128, verbose_name='\u7cfb\u7edf\u4fe1\u606f')),
('cabinet_no', models.CharField(blank=True, max_length=32, null=True, verbose_name='\u673a\u67dc\u53f7')), ('cabinet_no', models.CharField(blank=True, max_length=32, verbose_name='\u673a\u67dc\u53f7')),
('cabinet_pos', models.IntegerField(blank=True, null=True, verbose_name='\u673a\u5668\u4f4d\u7f6e')), ('cabinet_pos', models.IntegerField(blank=True, verbose_name='\u673a\u5668\u4f4d\u7f6e')),
('number', models.CharField(blank=True, max_length=32, null=True, verbose_name='\u8d44\u4ea7\u7f16\u53f7')), ('number', models.CharField(blank=True, max_length=32, unique=True, verbose_name='\u8d44\u4ea7\u7f16\u53f7')),
('sn', models.CharField(blank=True, max_length=128, null=True, verbose_name='SN\u7f16\u53f7')), ('sn', models.CharField(blank=True, max_length=128, unique=True, verbose_name='SN\u7f16\u53f7')),
('created_by', models.CharField(blank=True, max_length=32, null=True, verbose_name='\u521b\u5efa\u8005')), ('created_by', models.CharField(blank=True, max_length=32, verbose_name='\u521b\u5efa\u8005')),
('is_active', models.BooleanField(default=True, verbose_name='\u662f\u5426\u6fc0\u6d3b')), ('is_active', models.BooleanField(default=True, verbose_name='\u662f\u5426\u6fc0\u6d3b')),
('date_added', models.DateTimeField(auto_now=True, null=True)), ('date_added', models.DateTimeField(auto_now=True, null=True)),
('comment', models.CharField(blank=True, max_length=128, null=True, verbose_name='\u5907\u6ce8')), ('comment', models.CharField(blank=True, max_length=128, verbose_name='\u5907\u6ce8')),
], ],
options={ options={
'db_table': 'asset', 'db_table': 'asset',
...@@ -55,7 +55,7 @@ class Migration(migrations.Migration): ...@@ -55,7 +55,7 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=64, unique=True)), ('name', models.CharField(max_length=64, unique=True)),
('created_by', models.CharField(blank=True, max_length=32, null=True, verbose_name='\u521b\u5efa\u8005')), ('created_by', models.CharField(blank=True, max_length=32, verbose_name='\u521b\u5efa\u8005')),
('comment', models.CharField(blank=True, max_length=128, null=True)), ('comment', models.CharField(blank=True, max_length=128, null=True)),
], ],
options={ options={
...@@ -67,15 +67,15 @@ class Migration(migrations.Migration): ...@@ -67,15 +67,15 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=32, verbose_name='\u673a\u623f\u540d\u79f0')), ('name', models.CharField(max_length=32, verbose_name='\u673a\u623f\u540d\u79f0')),
('bandwidth', models.CharField(blank=True, default='', max_length=32, null=True, verbose_name='\u673a\u623f\u5e26\u5bbd')), ('bandwidth', models.CharField(blank=True, max_length=32, verbose_name='\u673a\u623f\u5e26\u5bbd')),
('contact', models.CharField(blank=True, default='', max_length=16, null=True, verbose_name='\u8054\u7cfb\u4eba')), ('contact', models.CharField(blank=True, max_length=16, verbose_name='\u8054\u7cfb\u4eba')),
('phone', models.CharField(blank=True, default='', max_length=32, null=True, verbose_name='\u8054\u7cfb\u7535\u8bdd')), ('phone', models.CharField(blank=True, max_length=32, verbose_name='\u8054\u7cfb\u7535\u8bdd')),
('address', models.CharField(blank=True, default='', max_length=128, null=True, verbose_name='\u673a\u623f\u5730\u5740')), ('address', models.CharField(blank=True, max_length=128, verbose_name='\u673a\u623f\u5730\u5740')),
('network', models.TextField(blank=True, default='', null=True, verbose_name='IP\u5730\u5740\u6bb5')), ('network', models.TextField(blank=True, verbose_name='IP\u5730\u5740\u6bb5')),
('date_added', models.DateField(auto_now=True, null=True)), ('date_added', models.DateField(auto_now=True, null=True)),
('operator', models.CharField(blank=True, default='', max_length=32, null=True, verbose_name='\u8fd0\u8425\u5546')), ('operator', models.CharField(blank=True, max_length=32, verbose_name='\u8fd0\u8425\u5546')),
('created_by', models.CharField(blank=True, max_length=32, null=True, verbose_name='\u521b\u5efa\u8005')), ('created_by', models.CharField(blank=True, max_length=32, verbose_name='\u521b\u5efa\u8005')),
('comment', models.CharField(blank=True, default='', max_length=128, null=True, verbose_name='\u5907\u6ce8')), ('comment', models.CharField(blank=True, max_length=128, verbose_name='\u5907\u6ce8')),
], ],
options={ options={
'db_table': 'idc', 'db_table': 'idc',
......
# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-08-21 09:57
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('assets', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='asset',
name='cabinet_pos',
field=models.IntegerField(blank=True, max_length=4, verbose_name='\u673a\u5668\u4f4d\u7f6e'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-08-21 09:59
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('assets', '0002_auto_20160821_1757'),
]
operations = [
migrations.AlterField(
model_name='asset',
name='cabinet_pos',
field=models.IntegerField(blank=True, max_length=4, null=True, verbose_name='\u673a\u5668\u4f4d\u7f6e'),
),
]
...@@ -6,7 +6,7 @@ from django.db import models ...@@ -6,7 +6,7 @@ from django.db import models
class AssetGroup(models.Model): class AssetGroup(models.Model):
name = models.CharField(max_length=64, unique=True) name = models.CharField(max_length=64, unique=True)
created_by = models.CharField(max_length=32, blank=True, null=True, verbose_name=u"创建者") created_by = models.CharField(max_length=32, blank=True, verbose_name=u"创建者")
comment = models.CharField(max_length=128, blank=True, null=True) comment = models.CharField(max_length=128, blank=True, null=True)
def __unicode__(self): def __unicode__(self):
...@@ -18,15 +18,15 @@ class AssetGroup(models.Model): ...@@ -18,15 +18,15 @@ class AssetGroup(models.Model):
class IDC(models.Model): class IDC(models.Model):
name = models.CharField(max_length=32, verbose_name=u'机房名称') name = models.CharField(max_length=32, verbose_name=u'机房名称')
bandwidth = models.CharField(max_length=32, blank=True, null=True, default='', verbose_name=u'机房带宽') bandwidth = models.CharField(max_length=32, blank=True, verbose_name=u'机房带宽')
contact = models.CharField(max_length=16, blank=True, null=True, default='', verbose_name=u'联系人') contact = models.CharField(max_length=16, blank=True, verbose_name=u'联系人')
phone = models.CharField(max_length=32, blank=True, null=True, default='', verbose_name=u'联系电话') phone = models.CharField(max_length=32, blank=True, verbose_name=u'联系电话')
address = models.CharField(max_length=128, blank=True, null=True, default='', verbose_name=u"机房地址") address = models.CharField(max_length=128, blank=True, verbose_name=u"机房地址")
network = models.TextField(blank=True, null=True, default='', verbose_name=u"IP地址段") network = models.TextField(blank=True, verbose_name=u"IP地址段")
date_added = models.DateField(auto_now=True, null=True) date_added = models.DateField(auto_now=True, null=True)
operator = models.CharField(max_length=32, blank=True, default='', null=True, verbose_name=u"运营商") operator = models.CharField(max_length=32, blank=True, verbose_name=u"运营商")
created_by = models.CharField(max_length=32, blank=True, null=True, verbose_name=u"创建者") created_by = models.CharField(max_length=32, blank=True, verbose_name=u"创建者")
comment = models.CharField(max_length=128, blank=True, default='', null=True, verbose_name=u"备注") comment = models.CharField(max_length=128, blank=True, verbose_name=u"备注")
def __unicode__(self): def __unicode__(self):
return self.name return self.name
...@@ -43,31 +43,34 @@ class AssetExtend(models.Model): ...@@ -43,31 +43,34 @@ class AssetExtend(models.Model):
class Asset(models.Model): class Asset(models.Model):
ip = models.CharField(max_length=32, blank=True, verbose_name="主机IP") ip = models.CharField(max_length=32, blank=True, verbose_name="主机IP")
other_ip = models.CharField(max_length=255, blank=True, null=True, verbose_name="其他IP") other_ip = models.CharField(max_length=255, blank=True, verbose_name="其他IP")
remote_card_ip = models.CharField(max_length=16, blank=True, null=True, verbose_name=u'远控卡IP') remote_card_ip = models.CharField(max_length=16, blank=True, verbose_name=u'远控卡IP')
hostname = models.CharField(unique=True, max_length=128, verbose_name=u"主机名") hostname = models.CharField(max_length=128, unique=True, blank=True, verbose_name=u"主机名")
port = models.IntegerField(blank=True, null=True, verbose_name=u"端口号") port = models.IntegerField(blank=True, verbose_name=u"端口号")
group = models.ManyToManyField(AssetGroup, blank=True, verbose_name=u"所属主机组") group = models.ManyToManyField(AssetGroup, blank=True, verbose_name=u"所属主机组")
username = models.CharField(max_length=16, blank=True, null=True, verbose_name=u"管理用户名") username = models.CharField(max_length=16, blank=True, verbose_name=u"管理用户名")
password = models.CharField(max_length=256, blank=True, null=True, verbose_name=u"密码") password = models.CharField(max_length=256, blank=True, verbose_name=u"密码")
idc = models.ForeignKey(IDC, blank=True, null=True, on_delete=models.SET_NULL, verbose_name=u'机房') idc = models.ForeignKey(IDC, blank=True, null=True, on_delete=models.SET_NULL, verbose_name=u'机房')
mac_addr = models.CharField(max_length=20, blank=True, null=True, verbose_name=u"MAC地址") mac_addr = models.CharField(max_length=20, blank=True, unique=True, verbose_name=u"MAC地址")
brand = models.CharField(max_length=64, blank=True, null=True, verbose_name=u'硬件厂商型号') brand = models.CharField(max_length=64, blank=True, verbose_name=u'硬件厂商型号')
cpu = models.CharField(max_length=64, blank=True, null=True, verbose_name=u'CPU') cpu = models.CharField(max_length=64, blank=True, verbose_name=u'CPU')
memory = models.CharField(max_length=128, blank=True, null=True, verbose_name=u'内存') memory = models.CharField(max_length=128, blank=True, verbose_name=u'内存')
disk = models.CharField(max_length=1024, blank=True, null=True, verbose_name=u'硬盘') disk = models.CharField(max_length=1024, blank=True, verbose_name=u'硬盘')
os = models.CharField(max_length=128, blank=True, null=True, verbose_name=u'系统信息') os = models.CharField(max_length=128, blank=True, verbose_name=u'系统信息')
cabinet_no = models.CharField(max_length=32, blank=True, null=True, verbose_name=u'机柜号') cabinet_no = models.CharField(max_length=32, blank=True, verbose_name=u'机柜号')
cabinet_pos = models.IntegerField(blank=True, null=True, verbose_name=u'机器位置') cabinet_pos = models.IntegerField(max_length=4, null=True, blank=True, verbose_name=u'机器位置')
number = models.CharField(max_length=32, blank=True, null=True, verbose_name=u'资产编号') number = models.CharField(max_length=32, blank=True, unique=True, verbose_name=u'资产编号')
status = models.ManyToManyField(AssetExtend, blank=True, related_name="asset_status_extend", verbose_name="机器状态") status = models.ManyToManyField(AssetExtend, blank=True,
type = models.ManyToManyField(AssetExtend, blank=True, related_name="asset_type_extend", verbose_name="机器类型") related_name="asset_status_extend", verbose_name="机器状态")
env = models.ManyToManyField(AssetExtend, blank=True, related_name="asset_env_extend", verbose_name="所属主机组环境") type = models.ManyToManyField(AssetExtend, blank=True,
sn = models.CharField(max_length=128, blank=True, null=True, verbose_name=u"SN编号") related_name="asset_type_extend", verbose_name="机器类型")
created_by = models.CharField(max_length=32, blank=True, null=True, verbose_name=u"创建者") env = models.ManyToManyField(AssetExtend, blank=True,
related_name="asset_env_extend", verbose_name="所属主机组环境")
sn = models.CharField(max_length=128, blank=True, unique=True, verbose_name=u"SN编号")
created_by = models.CharField(max_length=32, blank=True, verbose_name=u"创建者")
is_active = models.BooleanField(default=True, verbose_name=u"是否激活") is_active = models.BooleanField(default=True, verbose_name=u"是否激活")
date_added = models.DateTimeField(auto_now=True, null=True) date_added = models.DateTimeField(auto_now=True, null=True)
comment = models.CharField(max_length=128, blank=True, null=True, verbose_name=u"备注") comment = models.CharField(max_length=128, blank=True, verbose_name=u"备注")
def __unicode__(self): def __unicode__(self):
return self.ip return self.ip
......
This diff is collapsed.
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
<td class="text-center" name="id" value="{{ asset.id }}" data-editable='false'> <td class="text-center" name="id" value="{{ asset.id }}" data-editable='false'>
<input name="id" value="{{ asset.id }}" type="checkbox" class="i-checks"> <input name="id" value="{{ asset.id }}" type="checkbox" class="i-checks">
</td> </td>
<td class="text-center hostname"> <a href="{% url 'assets:asset-detail' %}?id={{ asset.id }}">{{ asset.hostname|default_if_none:"" }}</a></td> <td class="text-center hostname"> <a href="{% url 'assets:asset-detail' %}/{{ asset.id }}">{{ asset.hostname|default_if_none:"" }}</a></td>
<td class="text-center"> {{ asset.ip|default_if_none:"" }} </td> <td class="text-center"> {{ asset.ip|default_if_none:"" }} </td>
<td class="text-center"> {{ asset.idc.name|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.group.all|group_str2 }}</td>#}
......
# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-08-21 09:54
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0003_auto_20160814_1758'),
]
operations = [
migrations.AlterField(
model_name='user',
name='email',
field=models.EmailField(max_length=30, unique=True, verbose_name='\u90ae\u4ef6'),
),
migrations.AlterField(
model_name='user',
name='groups',
field=models.ManyToManyField(to='users.UserGroup', verbose_name='\u7528\u6237\u7ec4'),
),
migrations.AlterField(
model_name='user',
name='name',
field=models.CharField(max_length=20, verbose_name='\u59d3\u540d'),
),
migrations.AlterField(
model_name='user',
name='username',
field=models.CharField(max_length=20, unique=True, verbose_name='\u7528\u6237\u540d'),
),
]
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