92 lines
2.0 KiB
Python
92 lines
2.0 KiB
Python
from django.contrib import admin
|
|
from unfold.admin import ModelAdmin
|
|
from unfold.decorators import action # type: ignore
|
|
|
|
from .models import AuditEventType, AuditLog
|
|
|
|
|
|
@admin.register(AuditEventType)
|
|
class AuditEventTypeAdmin(ModelAdmin):
|
|
list_display = ("key", "title", "default_severity", "created_at")
|
|
search_fields = ("key", "title", "description")
|
|
list_filter = ("default_severity",)
|
|
ordering = ("key",)
|
|
compressed_fields = True
|
|
|
|
|
|
@admin.register(AuditLog)
|
|
class AuditLogAdmin(ModelAdmin):
|
|
date_hierarchy = "created_at"
|
|
list_display = (
|
|
"created_at",
|
|
"severity",
|
|
"event_type",
|
|
"actor",
|
|
"object_repr",
|
|
"source",
|
|
"ip_address",
|
|
)
|
|
list_filter = (
|
|
"severity",
|
|
"source",
|
|
"event_type",
|
|
("actor", admin.RelatedOnlyFieldListFilter),
|
|
"created_at",
|
|
)
|
|
search_fields = (
|
|
"message",
|
|
"object_repr",
|
|
"ip_address",
|
|
"user_agent",
|
|
"request_id",
|
|
"metadata",
|
|
"actor__username",
|
|
"actor__email",
|
|
)
|
|
readonly_fields = (
|
|
"created_at",
|
|
"actor",
|
|
"event_type",
|
|
"message",
|
|
"severity",
|
|
"source",
|
|
"target_content_type",
|
|
"target_object_id",
|
|
"object_repr",
|
|
"ip_address",
|
|
"user_agent",
|
|
"request_id",
|
|
"metadata",
|
|
)
|
|
compressed_fields = True
|
|
list_per_page = 50
|
|
|
|
fieldsets = (
|
|
(
|
|
None,
|
|
{
|
|
"fields": (
|
|
"created_at",
|
|
"event_type",
|
|
"severity",
|
|
"message",
|
|
"source",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Actor",
|
|
{"fields": ("actor", "ip_address", "user_agent", "request_id")},
|
|
),
|
|
(
|
|
"Target",
|
|
{"fields": ("target_content_type", "target_object_id", "object_repr")},
|
|
),
|
|
(
|
|
"Metadata",
|
|
{"fields": ("metadata",)},
|
|
),
|
|
)
|
|
|
|
|