# site_module/admin.py
from django.contrib import admin
from django.db import models  # این خط برای حل خطای NameError اضافه شده است
from django.forms import Textarea
from django.utils.html import format_html

from .models import (
    SiteSetting,
    Slider,
    SiteBanner,
    SiteFeature,
    AboutUs,
    FooterLink,
    FooterLinkBox
)

# ------------------------------
# Slider
# ------------------------------
@admin.register(Slider)
class SliderAdmin(admin.ModelAdmin):
    list_display = (
        'id',
        'show_image',
        'title',
        'product',
        'link',
        'ordering',
        'is_active',
    )

    list_editable = (
        'ordering',
        'is_active',
    )

    list_filter = (
        'is_active',
        'created_at',
    )

    search_fields = (
        'title',
        'description',
        'link',
        'product__title',
    )

    ordering = ('ordering',)

    readonly_fields = ('preview',)

    fieldsets = (
        ('اطلاعات اصلی', {
            'fields': ('title', 'description', 'button_text')
        }),

        ('اتصال', {
            'fields': ('product', 'link')
        }),

        ('تصویر', {
            'fields': ('image', 'preview')
        }),

        ('وضعیت', {
            'fields': ('ordering', 'is_active')
        }),
    )

    # نمایش thumbnail در لیست
    def show_image(self, obj):
        if obj.image:
            return format_html(
                "<img src='{}' width='80' height='50' style='object-fit: cover; border-radius:6px;' />",
                obj.image.url
            )
        return "—"
    show_image.short_description = "تصویر"

    # نمایش preview کامل در صفحه ادیت
    def preview(self, obj):
        if obj.image:
            return format_html(
                "<img src='{}' width='300' style='border-radius:10px; margin:10px 0;' />",
                obj.image.url
            )
        return "تصویری ثبت نشده"
    preview.short_description = "پیش‌نمایش"


# ------------------------------
# SiteBanner
# ------------------------------
@admin.register(SiteBanner)
class SiteBannerAdmin(admin.ModelAdmin):
    list_display = ['title', 'url', 'position']


# ------------------------------
# SiteFeature
# ------------------------------
@admin.register(SiteFeature)
class SiteFeatureAdmin(admin.ModelAdmin):
    list_display = ['title', 'is_active', 'order']
    list_editable = ['is_active', 'order']


# ------------------------------
# AboutUs
# ------------------------------
@admin.register(AboutUs)
class AboutUsAdmin(admin.ModelAdmin):
    list_display = ('title',)


# ------------------------------
# FooterLink
# ------------------------------
@admin.register(FooterLink)
class FooterLinkAdmin(admin.ModelAdmin):
    list_display = ('title', 'get_url', 'footer_link_box')

    def get_url(self, obj):
        return obj.get_url
    get_url.short_description = 'لینک'


# ------------------------------
# FooterLinkBox
# ------------------------------
@admin.register(FooterLinkBox)
class FooterLinkBoxAdmin(admin.ModelAdmin):
    list_display = ('title',)


# ------------------------------
# SiteSetting (تنها ثبت صحیح)
# ------------------------------
@admin.register(SiteSetting)
class SiteSettingAdmin(admin.ModelAdmin):
    list_display = ('site_name', 'title_url', 'is_main_setting')
    
    # بازنویسی نحوه نمایش تمام فیلدهای TextField در ادمین جهت مدیریت کدهای HTML
    formfield_overrides = {
        models.TextField: {
            'widget': Textarea(attrs={
                'rows': 6,
                'cols': 80,
                'style': 'direction: ltr; text-align: left; font-family: Consolas, Monaco, monospace; font-size: 13px;'
            })
        },
    }
