from django.contrib import admin
from django.utils.timezone import localtime
from django import forms
from .models import Category, Post


class PostAdminForm(forms.ModelForm):
    """Custom form với Summernote editor cho content"""
    content = forms.CharField(
        widget=forms.Textarea(attrs={'id': 'summernote-content', 'rows': 20}),
        label='Nội dung'
    )
    
    class Meta:
        model = Post
        fields = '__all__'


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ['name', 'slug', 'order']
    prepopulated_fields = {'slug': ('name',)}
    search_fields = ['name']
    ordering = ['order', 'name']


@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    form = PostAdminForm
    list_display = ['title', 'category', 'is_published', 'is_featured', 'created_at_local', 'views']
    list_filter = ['category', 'is_published', 'is_featured']
    search_fields = ['title', 'content']
    prepopulated_fields = {'slug': ('title',)}
    ordering = ['-created_at']
    
    fieldsets = (
        ('Nội dung', {
            'fields': ('title', 'slug', 'category', 'content', 'excerpt', 'thumbnail')
        }),
        ('Trạng thái', {
            'fields': ('is_published', 'is_featured', 'published_at')
        }),
        ('Thống kê', {
            'fields': ('views',),
            'classes': ('collapse',)
        }),
    )
    
    class Media:
        css = {
            'all': (
                'https://cdn.jsdelivr.net/npm/summernote@0.8.20/dist/summernote-lite.min.css',
            )
        }
        js = (
            'https://code.jquery.com/jquery-3.6.0.min.js',
            'https://cdn.jsdelivr.net/npm/summernote@0.8.20/dist/summernote-lite.min.js',
            'https://cdn.jsdelivr.net/npm/summernote@0.8.20/dist/lang/summernote-vi-VN.min.js',
            'admin/js/summernote_init.js',
        )
    
    def created_at_local(self, obj):
        if obj.created_at:
            return localtime(obj.created_at).strftime('%d/%m/%Y %H:%M')
        return '-'
    created_at_local.short_description = 'Ngày tạo'
    created_at_local.admin_order_field = 'created_at'

