""" System admin configuration """ from django.contrib import admin from django.urls import reverse from django.utils.html import format_html from igny8_core.business.system.models import DebugConfiguration @admin.register(DebugConfiguration) class DebugConfigurationAdmin(admin.ModelAdmin): """Admin for debug configuration (singleton)""" def has_add_permission(self, request): # Only allow one instance return not DebugConfiguration.objects.exists() def has_delete_permission(self, request, obj=None): # Don't allow deletion return False def changelist_view(self, request, extra_context=None): # Redirect to edit view for singleton if DebugConfiguration.objects.exists(): obj = DebugConfiguration.objects.first() return self.changeform_view(request, str(obj.pk), '', extra_context) return super().changelist_view(request, extra_context) fieldsets = ( ('Debug Logging Control', { 'fields': ('enable_debug_logging',), 'description': '⚠️ Master Switch: When DISABLED, all logging below is completely skipped (zero overhead). When ENABLED, logs appear in console output.' }), ('Logging Categories', { 'fields': ( 'log_ai_steps', 'log_api_requests', 'log_database_queries', 'log_celery_tasks', ), 'description': 'Fine-tune what gets logged when debug logging is enabled' }), ('Audit', { 'fields': ('updated_at', 'updated_by'), 'classes': ('collapse',) }), ) readonly_fields = ('updated_at', 'updated_by') def save_model(self, request, obj, form, change): obj.updated_by = request.user super().save_model(request, obj, form, change) # Show message about cache clearing if change: self.message_user(request, "Debug configuration updated. Cache cleared. Changes take effect immediately.", level='success' ) class Media: css = { 'all': ('admin/css/forms.css',) }