from django.contrib import admin from django.utils.translation import gettext_lazy as _ from django.utils.html import format_html from unfold.admin import ModelAdmin from unfold.decorators import display from apps.certificate.models import Certificate from utils.admin import project_admin_site @admin.register(Certificate) class CertificateAdmin(ModelAdmin): list_display = ['student', 'course', 'certificate_status', 'created_at'] list_filter = ['status', 'created_at'] search_fields = ['id', 'student__username', 'student__email', 'course__title'] readonly_fields = ['created_at', 'updated_at'] autocomplete_fields = ['student',] fieldsets = ( (None, { 'fields': ('student', 'course', 'status', 'certificate_file') }), (_('Timestamps'), { 'fields': ('created_at', 'updated_at'), 'classes': ('collapse',) }), ) @display(description=_("Status"), ordering="status") def certificate_status(self, obj): status_classes = { 'pending': 'unfold-badge unfold-badge--warning', 'approved': 'unfold-badge unfold-badge--success', 'rejected': 'unfold-badge unfold-badge--danger', 'issued': 'unfold-badge unfold-badge--info', } status_class = status_classes.get(obj.status.lower(), 'unfold-badge') return format_html('{}', status_class, obj.get_status_display()) def get_queryset(self, request): queryset = super().get_queryset(request) return queryset project_admin_site.register(Certificate, CertificateAdmin)