1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
from typing import Any
from django.contrib import admin
from django.http import HttpRequest
from django.utils.html import format_html
from .models import DBTaskResult
@admin.register(DBTaskResult)
class DBTaskResultAdmin(admin.ModelAdmin):
list_display = (
"id",
"task_name",
"status",
"enqueued_at",
"started_at",
"finished_at",
"priority",
"queue_name",
)
list_filter = ("status", "priority", "queue_name")
ordering = ["-enqueued_at"]
def has_add_permission(
self, request: HttpRequest, obj: DBTaskResult | None = None
) -> bool:
return False
def has_delete_permission(
self, request: HttpRequest, obj: DBTaskResult | None = None
) -> bool:
return False
def has_change_permission(
self, request: HttpRequest, obj: DBTaskResult | None = None
) -> bool:
return False
def get_readonly_fields(
self, request: HttpRequest, obj: DBTaskResult | None = None
) -> list[str]:
fields = [f.name for f in self.model._meta.fields]
fields[fields.index("traceback")] = "formatted_traceback"
return fields
def get_fields(
self, request: HttpRequest, obj: DBTaskResult | None = None
) -> list[Any]:
return self.get_readonly_fields(request, obj)
@admin.display(description="traceback")
def formatted_traceback(self, obj: DBTaskResult) -> str:
if not obj.traceback:
return "-"
return format_html(
"<pre>{}</pre>",
obj.traceback,
)
|