vbv/server/vbv_lernwelt/course/admin.py

72 lines
2.0 KiB
Python

from django.contrib import admin
from vbv_lernwelt.course.models import Course, CourseSession, CourseSessionUser
from vbv_lernwelt.learnpath.models import Circle
@admin.register(Course)
class CourseAdmin(admin.ModelAdmin):
list_display = [
"id",
"title",
"category_name",
"slug",
]
@admin.register(CourseSession)
class CourseSessionAdmin(admin.ModelAdmin):
date_hierarchy = "created_at"
list_display = [
"title",
"course",
"start_date",
"end_date",
"created_at",
"updated_at",
]
@admin.register(CourseSessionUser)
class CourseSessionUserAdmin(admin.ModelAdmin):
date_hierarchy = "created_at"
list_display = [
"course_session",
"user",
"created_at",
"updated_at",
]
search_fields = [
"user__first_name",
"user__last_name",
"user__email",
"course_session__title",
]
list_filter = [
"course_session__course",
"course_session",
]
fieldsets = [
(None, {"fields": ("user", "course_session")}),
(
"Expert/Trainer",
{
"fields": ("expert",),
"description": "Expert/Trainer kann erst ausgewählt werden, wenn der Kurs ausgewählt und bereits einmal gespeichert wurde.",
},
),
]
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "expert":
if request.resolver_match.kwargs.get("object_id"):
object_id = int(request.resolver_match.kwargs.get("object_id"))
csu = CourseSessionUser.objects.get(id=object_id)
kwargs["queryset"] = Circle.objects.descendant_of(
csu.course_session.course.coursepage
)
else:
kwargs["queryset"] = Circle.objects.none()
return super().formfield_for_manytomany(db_field, request, **kwargs)