111 lines
3.1 KiB
Python
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")
|