Versiunea funcțională EUMI
This commit is contained in:
+79
-33
@@ -1,4 +1,6 @@
|
||||
from django.contrib import admin
|
||||
from django.utils.html import format_html
|
||||
from django.urls import reverse
|
||||
from simple_history.admin import SimpleHistoryAdmin
|
||||
from .models import (
|
||||
Computer,
|
||||
@@ -7,49 +9,50 @@ from .models import (
|
||||
DigitalCertificate,
|
||||
MaintenanceRecord,
|
||||
DecommissionRecord,
|
||||
HandoverProtocol,
|
||||
)
|
||||
|
||||
from .models import DecommissionRecord
|
||||
|
||||
# --- Inlines for Computer ---
|
||||
class MaintenanceInlineComputer(admin.TabularInline):
|
||||
model = MaintenanceRecord
|
||||
fk_name = "computer"
|
||||
extra = 0
|
||||
# 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
|
||||
# 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
|
||||
# # --- 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
|
||||
# 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
|
||||
# # --- 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
|
||||
# class DecommissionInlinePeripheral(admin.StackedInline):
|
||||
# model = DecommissionRecord
|
||||
# fk_name = "peripheral"
|
||||
# extra = 0
|
||||
# max_num = 1
|
||||
|
||||
|
||||
@admin.register(Computer)
|
||||
@@ -57,7 +60,7 @@ 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]
|
||||
# inlines = [MaintenanceInlineComputer, DecommissionInlineComputer]
|
||||
|
||||
|
||||
@admin.register(Monitor)
|
||||
@@ -65,7 +68,7 @@ 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]
|
||||
# inlines = [MaintenanceInlineMonitor, DecommissionInlineMonitor]
|
||||
|
||||
|
||||
@admin.register(Peripheral)
|
||||
@@ -79,7 +82,7 @@ class PeripheralAdmin(SimpleHistoryAdmin):
|
||||
)
|
||||
list_filter = ("status", "peripheral_type", "entry_date", "assigned_to")
|
||||
search_fields = ("equipment_code", "name", "serial_number")
|
||||
inlines = [MaintenanceInlinePeripheral, DecommissionInlinePeripheral]
|
||||
# inlines = [MaintenanceInlinePeripheral, DecommissionInlinePeripheral]
|
||||
|
||||
|
||||
@admin.register(DigitalCertificate)
|
||||
@@ -108,3 +111,46 @@ class DecommissionRecordAdmin(SimpleHistoryAdmin):
|
||||
list_display = ("document_number", "date", "reason")
|
||||
list_filter = ("date",)
|
||||
search_fields = ("document_number", "reason")
|
||||
|
||||
|
||||
@admin.register(HandoverProtocol)
|
||||
class HandoverProtocolAdmin(SimpleHistoryAdmin):
|
||||
list_display = (
|
||||
"document_number",
|
||||
"date",
|
||||
"previous_holder",
|
||||
"new_holder",
|
||||
"it_validator",
|
||||
"print_protocol_button",
|
||||
)
|
||||
list_filter = ("date", "it_validator")
|
||||
filter_horizontal = ("computers", "monitors", "peripherals")
|
||||
# Make these fields read-only so they cannot be manually overwritten
|
||||
readonly_fields = ("document_number", "it_validator")
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
if not obj.it_validator:
|
||||
# Captures the logged-in user's name automatically
|
||||
obj.it_validator = request.user.get_full_name() or request.user.username
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
def print_protocol_button(self, obj):
|
||||
if obj.pk:
|
||||
url = reverse("equipment:print_handover", args=[obj.pk])
|
||||
return format_html(
|
||||
'<a class="button" href="{}" target="_blank" style="background-color: #417690; color: white; padding: 5px 10px; border-radius: 4px; text-decoration: none;">🖨️ Printează PV</a>',
|
||||
url,
|
||||
)
|
||||
return "-"
|
||||
|
||||
print_protocol_button.short_description = "Acțiune"
|
||||
|
||||
# @admin.register(DecommissionRecord)
|
||||
# class DecommissionRecordAdmin(SimpleHistoryAdmin):
|
||||
# list_display = ("document_number", "date", "reason")
|
||||
# search_fields = ("document_number", "reason")
|
||||
# list_filter = ("date",)
|
||||
|
||||
# Acest filter_horizontal va crea o interfață cu două coloane foarte utilă
|
||||
# pentru a selecta ușor multiple echipamente din stânga în dreapta
|
||||
filter_horizontal = ("computers", "monitors", "peripherals")
|
||||
|
||||
Reference in New Issue
Block a user