123 lines
3.3 KiB
Python
123 lines
3.3 KiB
Python
from django.contrib import admin
|
|
|
|
from vbv_lernwelt.course.models import (
|
|
Course,
|
|
CourseConfiguration,
|
|
CourseSession,
|
|
CourseSessionUser,
|
|
)
|
|
from vbv_lernwelt.feedback.services import (
|
|
get_feedbacks_for_course_sessions,
|
|
get_feedbacks_for_courses,
|
|
)
|
|
from vbv_lernwelt.learnpath.models import Circle
|
|
|
|
get_feedbacks_for_course_sessions.short_description = "Feedback export"
|
|
get_feedbacks_for_courses.short_description = "Feedback export"
|
|
|
|
|
|
@admin.register(CourseConfiguration)
|
|
class CourseConfigurationAdmin(admin.ModelAdmin):
|
|
list_display = [
|
|
"course",
|
|
"enable_circle_documents",
|
|
"enable_learning_mentor",
|
|
"enable_competence_certificates",
|
|
"is_vv",
|
|
"is_uk",
|
|
]
|
|
|
|
|
|
@admin.register(Course)
|
|
class CourseAdmin(admin.ModelAdmin):
|
|
list_display = [
|
|
"id",
|
|
"title",
|
|
"category_name",
|
|
"slug",
|
|
]
|
|
actions = [get_feedbacks_for_courses]
|
|
|
|
|
|
@admin.register(CourseSession)
|
|
class CourseSessionAdmin(admin.ModelAdmin):
|
|
date_hierarchy = "created_at"
|
|
list_display = [
|
|
"title",
|
|
"course",
|
|
"import_id",
|
|
"start_date",
|
|
"end_date",
|
|
"created_at",
|
|
"updated_at",
|
|
]
|
|
actions = [get_feedbacks_for_course_sessions]
|
|
|
|
|
|
@admin.register(CourseSessionUser)
|
|
class CourseSessionUserAdmin(admin.ModelAdmin):
|
|
date_hierarchy = "created_at"
|
|
list_display = [
|
|
"user",
|
|
"user_last_name",
|
|
"user_first_name",
|
|
"course_session",
|
|
"role",
|
|
"circles",
|
|
"optional_attendance",
|
|
# "created_at",
|
|
# "updated_at",
|
|
]
|
|
search_fields = [
|
|
"user__first_name",
|
|
"user__last_name",
|
|
"user__email",
|
|
"course_session__title",
|
|
]
|
|
list_filter = [
|
|
"role",
|
|
"course_session",
|
|
"optional_attendance",
|
|
]
|
|
raw_id_fields = [
|
|
"user",
|
|
]
|
|
|
|
def user_first_name(self, obj):
|
|
return obj.user.first_name
|
|
|
|
user_first_name.short_description = "First Name"
|
|
user_first_name.admin_order_field = "user__first_name"
|
|
|
|
def user_last_name(self, obj):
|
|
return obj.user.last_name
|
|
|
|
user_last_name.short_description = "Last Name"
|
|
user_last_name.admin_order_field = "user__last_name"
|
|
|
|
def circles(self, obj):
|
|
return ", ".join([c.title for c in obj.expert.all()])
|
|
|
|
fieldsets = [
|
|
(None, {"fields": ("user", "course_session", "role", "optional_attendance")}),
|
|
(
|
|
"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 = str(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)
|