Initial commit: UPS management system
This commit is contained in:
99
ups_management/ups_manager/models.py
Normal file
99
ups_management/ups_manager/models.py
Normal file
@@ -0,0 +1,99 @@
|
||||
from django.db import models
|
||||
from datetime import date
|
||||
|
||||
|
||||
class Contact(models.Model):
|
||||
name = models.CharField(max_length=100, verbose_name='姓名')
|
||||
phone = models.CharField(max_length=20, verbose_name='联系电话')
|
||||
email = models.EmailField(blank=True, null=True, verbose_name='邮箱')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = '联系人'
|
||||
verbose_name_plural = '联系人'
|
||||
|
||||
|
||||
class Supplier(models.Model):
|
||||
company_name = models.CharField(max_length=200, verbose_name='公司名称')
|
||||
contact_person = models.CharField(max_length=100, verbose_name='联系人')
|
||||
phone = models.CharField(max_length=20, verbose_name='联系电话')
|
||||
email = models.EmailField(blank=True, null=True, verbose_name='邮箱')
|
||||
address = models.CharField(max_length=500, blank=True, null=True, verbose_name='地址')
|
||||
remark = models.TextField(blank=True, null=True, verbose_name='备注')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
def __str__(self):
|
||||
return self.company_name
|
||||
|
||||
class Meta:
|
||||
verbose_name = '维保供应商'
|
||||
verbose_name_plural = '维保供应商'
|
||||
|
||||
|
||||
class UPSHost(models.Model):
|
||||
brand = models.CharField(max_length=100, verbose_name='品牌')
|
||||
model = models.CharField(max_length=100, verbose_name='型号')
|
||||
ip_address = models.CharField(max_length=50, verbose_name='IP地址')
|
||||
quantity = models.IntegerField(default=1, verbose_name='数量')
|
||||
location = models.CharField(max_length=200, verbose_name='存放位置')
|
||||
last_maintenance_date = models.DateField(blank=True, null=True, verbose_name='上次维保时间')
|
||||
contact = models.ForeignKey(Contact, on_delete=models.SET_NULL, blank=True, null=True, verbose_name='联系人')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
||||
|
||||
def __str__(self):
|
||||
if self.ip_address and not self.ip_address.startswith('-'):
|
||||
return f'{self.brand} {self.model} - {self.ip_address}'
|
||||
return f'{self.brand} {self.model}'
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'UPS主机'
|
||||
verbose_name_plural = 'UPS主机'
|
||||
|
||||
|
||||
class Battery(models.Model):
|
||||
brand = models.CharField(max_length=100, verbose_name='品牌')
|
||||
model = models.CharField(max_length=100, verbose_name='型号')
|
||||
weight = models.FloatField(verbose_name='重量(kg)')
|
||||
quantity = models.IntegerField(default=1, verbose_name='数量')
|
||||
location = models.CharField(max_length=200, verbose_name='存放位置')
|
||||
install_date = models.DateField(blank=True, null=True, verbose_name='安装日期')
|
||||
last_maintenance_date = models.DateField(blank=True, null=True, verbose_name='上次维保时间')
|
||||
ups_host = models.ForeignKey(UPSHost, on_delete=models.SET_NULL, blank=True, null=True, verbose_name='关联UPS主机')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
||||
|
||||
@property
|
||||
def used_years(self):
|
||||
if not self.install_date:
|
||||
return None
|
||||
today = date.today()
|
||||
delta = today - self.install_date
|
||||
return round(delta.days / 365.25, 1)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.brand} {self.model}'
|
||||
|
||||
class Meta:
|
||||
verbose_name = '电池'
|
||||
verbose_name_plural = '电池'
|
||||
|
||||
|
||||
class MaintenanceRecord(models.Model):
|
||||
ups_host = models.ForeignKey(UPSHost, on_delete=models.CASCADE, verbose_name='UPS主机')
|
||||
battery = models.ForeignKey(Battery, on_delete=models.SET_NULL, blank=True, null=True, verbose_name='电池')
|
||||
supplier = models.ForeignKey(Supplier, on_delete=models.SET_NULL, blank=True, null=True, verbose_name='维保供应商')
|
||||
maintenance_date = models.DateField(verbose_name='维修日期')
|
||||
content = models.TextField(verbose_name='维修内容')
|
||||
technician = models.CharField(max_length=100, verbose_name='维修人员')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.ups_host} - {self.maintenance_date}'
|
||||
|
||||
class Meta:
|
||||
verbose_name = '维修记录'
|
||||
verbose_name_plural = '维修记录'
|
||||
Reference in New Issue
Block a user