105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
from django.contrib import admin
|
|
|
|
from .models import (
|
|
EmailMessageRecord,
|
|
MailboxConnection,
|
|
RawDocument,
|
|
Source,
|
|
SourceLease,
|
|
SourceOriginState,
|
|
SourcePolicyReview,
|
|
SourceRobotsCache,
|
|
SourceRun,
|
|
)
|
|
|
|
|
|
@admin.register(MailboxConnection)
|
|
class MailboxConnectionAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"platform",
|
|
"provider",
|
|
"username",
|
|
"enabled",
|
|
"poll_interval_minutes",
|
|
"last_success_at",
|
|
"next_poll_at",
|
|
)
|
|
list_filter = ("platform", "provider", "enabled")
|
|
search_fields = ("username",)
|
|
exclude = ("encrypted_password", "lease_token")
|
|
|
|
|
|
@admin.register(Source)
|
|
class SourceAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"name",
|
|
"domain",
|
|
"source_type",
|
|
"status",
|
|
"policy",
|
|
"last_success_at",
|
|
"failure_count",
|
|
"next_run_at",
|
|
)
|
|
list_filter = ("source_type", "status", "policy", "strict_mode")
|
|
search_fields = ("name", "domain", "base_url")
|
|
|
|
|
|
@admin.register(SourceRun)
|
|
class SourceRunAdmin(admin.ModelAdmin):
|
|
list_display = ("source", "status", "started_at", "finished_at", "extracted_count")
|
|
list_filter = ("status", "error_category")
|
|
readonly_fields = [field.name for field in SourceRun._meta.fields]
|
|
|
|
|
|
@admin.register(SourcePolicyReview)
|
|
class SourcePolicyReviewAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"source",
|
|
"decision",
|
|
"scope",
|
|
"actor",
|
|
"expires_at",
|
|
"created_at",
|
|
)
|
|
list_filter = ("decision", "scope", "expires_at")
|
|
search_fields = ("source__name", "source__domain", "actor__username", "reason")
|
|
readonly_fields = [field.name for field in SourcePolicyReview._meta.fields]
|
|
|
|
|
|
@admin.register(SourceRobotsCache)
|
|
class SourceRobotsCacheAdmin(admin.ModelAdmin):
|
|
list_display = ("origin", "expires_at", "byte_length", "updated_at", "error")
|
|
list_filter = ("error",)
|
|
search_fields = ("origin",)
|
|
readonly_fields = [field.name for field in SourceRobotsCache._meta.fields]
|
|
|
|
|
|
@admin.register(SourceLease)
|
|
class SourceLeaseAdmin(admin.ModelAdmin):
|
|
list_display = ("source", "token", "worker_id", "expires_at", "updated_at")
|
|
search_fields = ("source__name", "source__domain", "worker_id")
|
|
readonly_fields = [field.name for field in SourceLease._meta.fields]
|
|
|
|
|
|
@admin.register(SourceOriginState)
|
|
class SourceOriginStateAdmin(admin.ModelAdmin):
|
|
list_display = ("domain", "next_allowed_at", "updated_at")
|
|
search_fields = ("domain",)
|
|
readonly_fields = [field.name for field in SourceOriginState._meta.fields]
|
|
|
|
|
|
@admin.register(RawDocument)
|
|
class RawDocumentAdmin(admin.ModelAdmin):
|
|
list_display = ("source", "kind", "http_status", "byte_length", "quarantined", "created_at")
|
|
list_filter = ("kind", "quarantined", "http_status")
|
|
search_fields = ("url", "final_url", "content_hash")
|
|
readonly_fields = [field.name for field in RawDocument._meta.fields]
|
|
|
|
|
|
@admin.register(EmailMessageRecord)
|
|
class EmailMessageRecordAdmin(admin.ModelAdmin):
|
|
list_display = ("subject", "sender", "received_at", "processed", "created_at")
|
|
list_filter = ("processed", "mailbox")
|
|
search_fields = ("subject", "sender", "message_id")
|