from django.contrib import admin
from blogs.models import Blog


@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'author', 'is_published', 'is_featured', 'published_at', 'created_at')
    list_filter = ('is_published', 'is_featured', 'created_at', 'published_at')
    search_fields = ('title', 'slug', 'tags', 'meta_title')
    readonly_fields = ('created_at', 'updated_at', 'published_at')
    prepopulated_fields = {'slug': ('title',)}
    
    fieldsets = (
        ('Blog Content', {
            'fields': ('title', 'slug', 'content', 'author')
        }),
        ('Media', {
            'fields': ('thumbnail_image', 'featured_image'),
        }),
        ('SEO', {
            'fields': ('meta_title', 'meta_description', 'tags'),
            'description': 'Meta title max 60 chars, Meta description max 160 chars'
        }),
        ('Open Graph', {
            'fields': ('og_title', 'og_description', 'og_image'),
            'classes': ('collapse',)
        }),
        ('Publishing', {
            'fields': ('is_published', 'is_featured', 'published_at')
        }),
        ('Timestamps', {
            'fields': ('created_at', 'updated_at'),
            'classes': ('collapse',)
        }),
    )
    
    def save_model(self, request, obj, form, change):
        """Set author to current user if not set"""
        if not obj.author:
            obj.author = request.user
        super().save_model(request, obj, form, change)
