"""
Admin configuration for dashboard app.
"""
from django.contrib import admin
from apps.dashboard.models import SiteSettings, EmailTemplate


@admin.register(SiteSettings)
class SiteSettingsAdmin(admin.ModelAdmin):
    list_display = (
        'institute_name', 'certificate_verify_url', 'currency_code',
        'enable_manual_payment', 'enable_stripe_payment', 'smtp_enabled', 'updated_at',
    )
    fieldsets = (
        ('Branding', {'fields': ('institute_name', 'tagline', 'logo', 'logo_dark', 'favicon')}),
        ('Certificates', {
            'fields': (
                'certificate_verify_url',
                'certificate_signer_name',
                'certificate_signer_title',
                'certificate_signature',
                'certificate_seal',
            ),
        }),
        ('Theme', {'fields': ('theme_preset', 'theme_primary', 'theme_secondary', 'theme_accent', 'theme_success')}),
        ('Currency', {'fields': ('currency_code', 'currency_symbol')}),
        ('Payments', {
            'fields': (
                'enable_manual_payment', 'enable_stripe_payment', 'manual_payment_instructions',
                'stripe_publishable_key', 'stripe_secret_key', 'stripe_webhook_secret',
            ),
        }),
        ('Email / SMTP', {
            'fields': (
                'smtp_enabled', 'smtp_host', 'smtp_port', 'smtp_use_tls', 'smtp_use_ssl',
                'smtp_username', 'smtp_password', 'smtp_from_email',
            ),
        }),
    )

    def has_add_permission(self, request):
        return not SiteSettings.objects.exists()

    def has_delete_permission(self, request, obj=None):
        return False


@admin.register(EmailTemplate)
class EmailTemplateAdmin(admin.ModelAdmin):
    list_display = ('name', 'slug', 'trigger', 'is_active', 'updated_at')
    list_filter = ('trigger', 'is_active')
    search_fields = ('name', 'slug', 'subject')
    prepopulated_fields = {'slug': ('name',)}
