29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
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)
|