Files
eumi_v4/equipment/admin.py
T

111 lines
3.1 KiB
Python

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")