Files
netmeeting-infra/device_management/migrations/0001_initial.py

121 lines
7.9 KiB
Python

# Generated by Django 5.2.14 on 2026-05-18 09:21
import device_management.models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Device',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location', models.CharField(max_length=100, verbose_name='地点')),
('building', models.CharField(blank=True, max_length=50, null=True, verbose_name='楼栋')),
('floor', models.CharField(blank=True, max_length=20, null=True, verbose_name='楼层')),
('cabinet', models.CharField(blank=True, max_length=50, null=True, verbose_name='机柜')),
('device_name', models.CharField(max_length=100, verbose_name='设备名称')),
('model', models.CharField(blank=True, max_length=100, null=True, verbose_name='型号')),
('brand', models.CharField(blank=True, max_length=100, null=True, verbose_name='品牌')),
('mac_address', models.CharField(blank=True, max_length=17, null=True, verbose_name='MAC地址')),
('enable_date', models.DateField(blank=True, null=True, verbose_name='启用日期')),
('last_inspection_date', models.DateField(blank=True, null=True, verbose_name='最后巡检日期')),
('thumbnail', models.ImageField(blank=True, null=True, upload_to=device_management.models.device_thumbnail_path, verbose_name='缩略图')),
('status', models.CharField(choices=[('normal', '正常'), ('warning', '告警'), ('offline', '离线'), ('repair', '维修中'), ('scrap', '已报废')], default='normal', max_length=20, verbose_name='状态')),
('responsible_person', models.CharField(blank=True, max_length=50, null=True, verbose_name='负责人')),
('warranty_expire', models.DateField(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='更新时间')),
],
options={
'verbose_name': '设备',
'verbose_name_plural': '设备',
'db_table': 'device',
'indexes': [models.Index(fields=['location', 'building'], name='device_locatio_6a4f0a_idx'), models.Index(fields=['status'], name='device_status_6321a6_idx')],
},
),
migrations.CreateModel(
name='DeviceAttachment',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('file', models.FileField(upload_to=device_management.models.device_attachment_path, verbose_name='文件')),
('file_name', models.CharField(max_length=255, verbose_name='文件名')),
('file_type', models.CharField(blank=True, max_length=50, null=True, verbose_name='文件类型')),
('uploaded_at', models.DateTimeField(auto_now_add=True, verbose_name='上传时间')),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='device_management.device', verbose_name='设备')),
],
options={
'verbose_name': '设备附件',
'verbose_name_plural': '设备附件',
'db_table': 'device_attachment',
},
),
migrations.CreateModel(
name='DeviceIP',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('ip_address', models.CharField(max_length=45, unique=True, verbose_name='IP地址')),
('ip_type', models.CharField(default='management', max_length=20, verbose_name='IP类型')),
('is_primary', models.BooleanField(default=False, verbose_name='是否主IP')),
('subnet_mask', models.CharField(blank=True, max_length=15, null=True, verbose_name='子网掩码')),
('gateway', models.CharField(blank=True, max_length=45, null=True, verbose_name='网关')),
('vlan_id', models.CharField(blank=True, max_length=10, null=True, verbose_name='VLAN ID')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ips', to='device_management.device', verbose_name='设备')),
],
options={
'verbose_name': '设备IP地址',
'verbose_name_plural': '设备IP地址',
'db_table': 'device_ip',
},
),
migrations.CreateModel(
name='DeviceSerial',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('serial_number', models.CharField(max_length=100, unique=True, verbose_name='序列号')),
('serial_type', models.CharField(default='main', max_length=50, verbose_name='序列号类型')),
('is_primary', models.BooleanField(default=False, verbose_name='是否主序列号')),
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='备注')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='serials', to='device_management.device', verbose_name='设备')),
],
options={
'verbose_name': '设备序列号',
'verbose_name_plural': '设备序列号',
'db_table': 'device_serial',
},
),
migrations.CreateModel(
name='MaintenanceRecord',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('maintenance_date', models.DateField(verbose_name='维修日期')),
('fault_description', models.TextField(blank=True, null=True, verbose_name='故障描述')),
('repair_content', models.TextField(blank=True, null=True, verbose_name='维修内容')),
('replaced_parts', models.CharField(blank=True, max_length=255, null=True, verbose_name='更换配件')),
('maintenance_by', models.CharField(blank=True, max_length=50, null=True, verbose_name='维修人')),
('cost', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='费用')),
('remark', models.TextField(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='更新时间')),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='maintenance_records', to='device_management.device', verbose_name='设备')),
],
options={
'verbose_name': '维修记录',
'verbose_name_plural': '维修记录',
'db_table': 'maintenance_record',
'ordering': ['-maintenance_date'],
},
),
]