""" Django admin configuration for Website Analyzer models. """ from django.contrib import admin from .models import Website, Scan, Issue, Metric @admin.register(Website) class WebsiteAdmin(admin.ModelAdmin): list_display = ('url', 'domain', 'created_at', 'last_scanned_at') list_filter = ('created_at', 'last_scanned_at') search_fields = ('url', 'domain') readonly_fields = ('id', 'created_at', 'domain') ordering = ('-created_at',) class IssueInline(admin.TabularInline): model = Issue extra = 0 readonly_fields = ('id', 'category', 'severity', 'tool', 'title', 'created_at') can_delete = False show_change_link = True max_num = 10 class MetricInline(admin.TabularInline): model = Metric extra = 0 readonly_fields = ('id', 'name', 'display_name', 'value', 'unit', 'source', 'score') can_delete = False max_num = 15 @admin.register(Scan) class ScanAdmin(admin.ModelAdmin): list_display = ( 'id', 'website', 'status', 'overall_score', 'performance_score', 'security_score', 'created_at' ) list_filter = ('status', 'created_at') search_fields = ('website__url', 'website__domain') readonly_fields = ( 'id', 'created_at', 'started_at', 'completed_at', 'celery_task_id', 'raw_lighthouse_data', 'raw_zap_data', 'raw_playwright_data', 'raw_headers_data' ) inlines = [IssueInline, MetricInline] ordering = ('-created_at',) fieldsets = ( ('Basic Info', { 'fields': ('id', 'website', 'status', 'celery_task_id') }), ('Timestamps', { 'fields': ('created_at', 'started_at', 'completed_at') }), ('Scores', { 'fields': ( 'overall_score', 'performance_score', 'accessibility_score', 'seo_score', 'best_practices_score', 'security_score' ) }), ('Errors', { 'fields': ('error_message',), 'classes': ('collapse',) }), ('Raw Data', { 'fields': ( 'raw_lighthouse_data', 'raw_zap_data', 'raw_playwright_data', 'raw_headers_data' ), 'classes': ('collapse',) }), ) @admin.register(Issue) class IssueAdmin(admin.ModelAdmin): list_display = ('title', 'scan', 'category', 'severity', 'tool', 'created_at') list_filter = ('category', 'severity', 'tool', 'created_at') search_fields = ('title', 'description', 'scan__website__url') readonly_fields = ('id', 'created_at', 'raw_data') ordering = ('severity', '-created_at') @admin.register(Metric) class MetricAdmin(admin.ModelAdmin): list_display = ('display_name', 'scan', 'value', 'unit', 'source', 'score') list_filter = ('source', 'unit') search_fields = ('name', 'display_name', 'scan__website__url') readonly_fields = ('id', 'created_at') ordering = ('name',)