from django.contrib import admin from simple_history.admin import SimpleHistoryAdmin from .models import ( Computer, Monitor, Peripheral, DigitalCertificate, MaintenanceRecord, DecommissionRecord, ) # --- Inlines for Computer --- class MaintenanceInlineComputer(admin.TabularInline): model = MaintenanceRecord fk_name = "computer" extra = 0 class DecommissionInlineComputer(admin.StackedInline): model = DecommissionRecord fk_name = "computer" extra = 0 max_num = 1 # --- Inlines for Monitor --- class MaintenanceInlineMonitor(admin.TabularInline): model = MaintenanceRecord fk_name = "monitor" extra = 0 class DecommissionInlineMonitor(admin.StackedInline): model = DecommissionRecord fk_name = "monitor" extra = 0 max_num = 1 # --- Inlines for Peripheral --- class MaintenanceInlinePeripheral(admin.TabularInline): model = MaintenanceRecord fk_name = "peripheral" extra = 0 class DecommissionInlinePeripheral(admin.StackedInline): model = DecommissionRecord fk_name = "peripheral" extra = 0 max_num = 1 @admin.register(Computer) class ComputerAdmin(SimpleHistoryAdmin): list_display = ("equipment_code", "oem_name", "status", "assigned_to", "entry_date") list_filter = ("status", "entry_date", "assigned_to") search_fields = ("equipment_code", "oem_name", "mac_address", "observations") inlines = [MaintenanceInlineComputer, DecommissionInlineComputer] @admin.register(Monitor) class MonitorAdmin(SimpleHistoryAdmin): list_display = ("equipment_code", "name", "status", "assigned_to", "entry_date") list_filter = ("status", "entry_date", "assigned_to") search_fields = ("equipment_code", "name", "serial_number") inlines = [MaintenanceInlineMonitor, DecommissionInlineMonitor] @admin.register(Peripheral) class PeripheralAdmin(SimpleHistoryAdmin): list_display = ( "equipment_code", "name", "peripheral_type", "status", "assigned_to", ) list_filter = ("status", "peripheral_type", "entry_date", "assigned_to") search_fields = ("equipment_code", "name", "serial_number") inlines = [MaintenanceInlinePeripheral, DecommissionInlinePeripheral] @admin.register(DigitalCertificate) class DigitalCertificateAdmin(SimpleHistoryAdmin): list_display = ( "get_certificate_type_display", "assigned_to", "issue_date", "expiration_date", "is_canceled", ) list_filter = ("certificate_type", "is_canceled", "issue_date") search_fields = ("assigned_to__name", "assigned_to__username") # Optionally register the records independently so they can be searched globally @admin.register(MaintenanceRecord) class MaintenanceRecordAdmin(SimpleHistoryAdmin): list_display = ("date", "operation_type", "performed_by") list_filter = ("date", "operation_type") search_fields = ("description", "performed_by") @admin.register(DecommissionRecord) class DecommissionRecordAdmin(SimpleHistoryAdmin): list_display = ("document_number", "date", "reason") list_filter = ("date",) search_fields = ("document_number", "reason")