from django.contrib import admin from django.db.models.query import QuerySet from django.http import HttpRequest from django.utils.safestring import SafeText from ..models.students import Student from ..models.courses import Course from ..custom.colortag import course_color class CourseAdmin(admin.ModelAdmin): list_display = ("ctype", "cnumber","color_display", "course_students", "year") list_filter = ("ctype", "year") def get_queryset(self, request: HttpRequest) -> QuerySet: return super().get_queryset(request).order_by("ctype", "cnumber") @admin.display(description="Student Number") def course_students(self, obj: Course) -> SafeText: if not obj.pk: return SafeText("") return SafeText(f"{Student.objects.filter(course = obj.id).count()}") # Dinamically add color_display property to show a colored dot @admin.display(description="Color") def color_display(self, obj: Course) -> SafeText: if not obj.pk: return SafeText("") return course_color(obj.color)