from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Asset(models.Model):
"""所有资产的共有数据表"""
assets_type_choice = (
('Server', '服务器'),
('NetworkDevice', '网络设备'),
('StorageDevice', '存储设备'),
('SecurityDevice', '安全设备'),
('Software', '软件资产'),
)
asset_status = (
(0, '在线'),
(1, '下线'),
(2, '未知'),
(3, '故障'),
(4, '备用'),
)
asset_type = models.CharField(choices=assets_type_choice, max_length=64, default='Server', verbose_name='资产类型')
name = models.CharField(max_length=64, unique=True, verbose_name='资产名称') # 不可重复
sn = models.CharField(max_length=128, unique=True, verbose_name='资产序列号') # 不可重复
business_unit = models.ForeignKey('BusinessUnit', null=True, blank=True, verbose_name='所属业务线',
on_delete=models.CASCADE)
status = models.CharField(choices=asset_status, max_length=64, default=0, verbose_name='设备状态')
manufacturer = models.ForeignKey('Manufacturer', null=True, blank=True, verbose_name='设备制造商',
on_delete=models.CASCADE)
manage_ip = models.GenericIPAddressField(null=True, blank=True, verbose_name='管理IP')
tags = models.ManyToManyField('Tag', blank=True, verbose_name='标签')
admin = models.ForeignKey(User, null=True, blank=True, verbose_name='资产管理员', related_name='admin',
on_delete=models.CASCADE)
idc = models.ForeignKey('IDC', null=True, blank=True, verbose_name='所在数据中心', on_delete=models.CASCADE)
contract = models.ForeignKey('Contract', null=True, blank=True, verbose_name='合同', on_delete=models.CASCADE)
purchase_date = models.DateField(null=True, blank=True, verbose_name='购买日期')
expire_date = models.DateField(null=True, blank=True, verbose_name='过保日期')
price = models.FloatField(null=True, blank=True, verbose_name='价格')
approved_by = models.ForeignKey(User, null=True, blank=True, verbose_name='批准人',
related_name='approved_by',
on_delete=models.CASCADE)
memo = models.TextField(null=True, blank=True, verbose_name='备注')
c_time = models.DateTimeField(auto_now_add=True, verbose_name='批准日期')
m_time = models.DateTimeField(auto_now=True, verbose_name='更新日期')
def __str__(self):
return '<%s> %s' % (self.get_asset_type_display(), self.name)
class Meta:
verbose_name = '资产总表'
verbose_name_plural = verbose_name
ordering = ['-c_time']
class Server(models.Model):
"""服务器设备"""
sub_asset_type_choice = (
(0, 'PC服务器'),
(1, '刀片机'),
(2, '小型机'),
)
created_by_choice = (
('