Files
netmeeting-infra/device_management/admin.py

66 lines
1.9 KiB
Python

from django.contrib import admin
from .models import (
Device, DeviceSerial, DeviceIP, MaintenanceRecord, DeviceAttachment
)
class DeviceSerialInline(admin.TabularInline):
model = DeviceSerial
extra = 1
class DeviceIPInline(admin.TabularInline):
model = DeviceIP
extra = 1
class MaintenanceRecordInline(admin.TabularInline):
model = MaintenanceRecord
extra = 1
class DeviceAttachmentInline(admin.TabularInline):
model = DeviceAttachment
extra = 1
@admin.register(Device)
class DeviceAdmin(admin.ModelAdmin):
list_display = [
'id', 'device_name', 'location', 'building', 'status',
'responsible_person', 'enable_date', 'service_duration_days'
]
list_filter = ['status', 'location', 'building']
search_fields = ['device_name', 'location', 'brand', 'model']
inlines = [DeviceSerialInline, DeviceIPInline, MaintenanceRecordInline, DeviceAttachmentInline]
date_hierarchy = 'enable_date'
@admin.register(DeviceSerial)
class DeviceSerialAdmin(admin.ModelAdmin):
list_display = ['id', 'device', 'serial_number', 'serial_type', 'is_primary']
list_filter = ['serial_type', 'is_primary']
search_fields = ['serial_number']
@admin.register(DeviceIP)
class DeviceIPAdmin(admin.ModelAdmin):
list_display = ['id', 'device', 'ip_address', 'ip_type', 'is_primary']
list_filter = ['ip_type', 'is_primary']
search_fields = ['ip_address']
@admin.register(MaintenanceRecord)
class MaintenanceRecordAdmin(admin.ModelAdmin):
list_display = ['id', 'device', 'maintenance_date', 'maintenance_by', 'cost']
list_filter = ['maintenance_date', 'maintenance_by']
search_fields = ['fault_description', 'repair_content']
date_hierarchy = 'maintenance_date'
@admin.register(DeviceAttachment)
class DeviceAttachmentAdmin(admin.ModelAdmin):
list_display = ['id', 'device', 'file_name', 'file_type', 'uploaded_at']
list_filter = ['file_type', 'uploaded_at']
search_fields = ['file_name']