from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from feder.letters.models import Letter
from feder.virus_scan.models import EngineApiKey, Request
[docs]
@admin.register(Request)
class ScanRequestAdmin(admin.ModelAdmin):
date_hierarchy = "created"
list_display = (
"id",
"content_type",
"object_id",
"get_letter_is_spam",
"engine_name",
"status",
"created",
"modified",
)
ordering = ("-id",)
list_filter = ("engine_name", "status", "modified")
actions = None
[docs]
def get_queryset(self, *args, **kwargs):
qs = super().get_queryset(*args, **kwargs)
return qs.prefetch_related("content_object").select_related("content_type")
@admin.display(description=_("Letter is spam"))
def get_letter_is_spam(self, obj):
if hasattr(obj.content_object, "letter"):
return Letter.SPAM._display_map[obj.content_object.letter.is_spam]
return None
[docs]
def has_delete_permission(self, request, obj=None):
return request.user.is_superuser
[docs]
def has_change_permission(self, request, obj=None):
return False
[docs]
def has_add_permission(self, request, obj=None):
return False
[docs]
@admin.register(EngineApiKey)
class EngineApiKeyAdmin(admin.ModelAdmin):
list_display = (
"name",
"engine",
"prevention_limit",
"prevention_remaining",
"prevention_interval_sec",
"prevention_reset_at",
"last_used",
)
ordering = ("-id",)
list_filter = ("engine",)
readonly_fields = (
"prevention_limit",
"prevention_remaining",
"prevention_interval_sec",
"prevention_reset_at",
"last_used",
)