from django.contrib import admin
from django.utils.html import format_html
from .models import Video


@admin.register(Video)
class VideoAdmin(admin.ModelAdmin):
    list_display = ['id', 'video_preview', 'created_by_display', 'file_name', 'created_at']
    list_filter = ['created_at']
    search_fields = ['created_by__username', 'file']
    raw_id_fields = ['created_by']
    date_hierarchy = 'created_at'
    ordering = ['-created_at']
    readonly_fields = ['created_at', 'video_player']
    list_select_related = ['created_by']

    fieldsets = (
        ('Video Info', {
            'fields': ('file', 'video_player', 'created_by')
        }),
        ('Metadata', {
            'fields': ('created_at',)
        }),
    )

    def created_by_display(self, obj):
        return obj.created_by.username
    created_by_display.short_description = 'Created By'
    created_by_display.admin_order_field = 'created_by__username'

    def file_name(self, obj):
        if obj.file:
            return obj.file.name.split('/')[-1]
        return '-'
    file_name.short_description = 'File Name'

    def video_preview(self, obj):
        if obj.file:
            return format_html(
                '<span style="color: #007bff;">🎬</span>'
            )
        return '-'
    video_preview.short_description = 'Video'

    def video_player(self, obj):
        if obj.file:
            return format_html(
                '<video width="320" height="240" controls>'
                '<source src="{}" type="video/mp4">'
                'Your browser does not support the video tag.'
                '</video>',
                obj.file.url
            )
        return 'No video'
    video_player.short_description = 'Preview'
