from django.contrib import admin from .models import Category, Book, Order from django.utils.html import format_html @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): list_display = ('name', 'slug', 'book_count', 'display_image') prepopulated_fields = {'slug': ('name',)} def book_count(self, obj): return obj.books.count() book_count.short_description = 'Books' def display_image(self, obj): if obj.image: return format_html('', obj.image.url) return "-" display_image.short_description = 'Image' @admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'price', 'is_featured', 'display_cover', 'created_at') list_filter = ('category', 'is_featured', 'created_at') list_editable = ('is_featured',) search_fields = ('title', 'description') prepopulated_fields = {'slug': ('title',)} def display_cover(self, obj): if obj.cover_image: return format_html('', obj.cover_image.url) return "-" display_cover.short_description = 'Cover' @admin.register(Order) class OrderAdmin(admin.ModelAdmin): list_display = ('book', 'user_email', 'transaction_id', 'status', 'display_screenshot', 'created_at') list_filter = ('status', 'created_at') search_fields = ('user_email', 'transaction_id') actions = ['approve_orders', 'reject_orders'] def approve_orders(self, request, queryset): queryset.update(status='approved') approve_orders.short_description = "✅ Mark as Approved" def reject_orders(self, request, queryset): queryset.update(status='rejected') reject_orders.short_description = "❌ Mark as Rejected" def display_screenshot(self, obj): if obj.payment_screenshot: return format_html('', obj.payment_screenshot.url, obj.payment_screenshot.url) return "No Proof" display_screenshot.short_description = 'Payment Proof'