from django.contrib import admin
from django.utils.html import format_html
from .models import Download, Banner


@admin.register(Download)
class DownloadAdmin(admin.ModelAdmin):
    list_display = ['id', 'download_type', 'version', 'is_required', 'has_file', 'created_at']
    list_filter = ['download_type', 'is_required']
    search_fields = ['version', 'changelog']
    list_editable = ['is_required']
    ordering = ['-id']
    
    fieldsets = (
        ('Thông tin', {
            'fields': ('download_type', 'version', 'is_required')
        }),
        ('File tải về', {
            'fields': ('file', 'download_link'),
            'description': 'Upload file trực tiếp HOẶC nhập link ngoài. Nếu upload file, link ngoài sẽ bị bỏ qua.'
        }),
        ('Changelog', {
            'fields': ('changelog',),
        }),
    )
    
    def has_file(self, obj):
        return bool(obj.file)
    has_file.boolean = True
    has_file.short_description = 'Có file'


@admin.register(Banner)
class BannerAdmin(admin.ModelAdmin):
    list_display = ['id', 'title', 'image_preview', 'order', 'is_active', 'created_at']
    list_filter = ['is_active']
    search_fields = ['title']
    list_editable = ['order', 'is_active']
    ordering = ['order', '-created_at']
    
    fieldsets = (
        ('Nội dung', {
            'fields': ('title', 'image', 'link')
        }),
        ('Cài đặt', {
            'fields': ('order', 'is_active')
        }),
    )
    
    def image_preview(self, obj):
        if obj.image:
            return format_html('<img src="{}" width="100" height="auto" />', obj.image.url)
        return '-'
    image_preview.short_description = 'Xem trước'

