vbv/server/vbv_lernwelt/duedate/admin.py

53 lines
1.7 KiB
Python

from django.contrib import admin
from wagtail.models import Page
from vbv_lernwelt.duedate.models import DueDate
from vbv_lernwelt.learnpath.models import (
LearningContentAttendanceCourse,
LearningContentEdoniqTest,
)
# Register your models here.
@admin.register(DueDate)
class DueDateAdmin(admin.ModelAdmin):
date_hierarchy = "start"
list_display = [
"course_session",
"title",
"display_subtitle",
"start",
"end",
]
list_filter = ["course_session"]
readonly_fields = ["course_session", "page"]
def get_readonly_fields(self, request, obj=None):
default_readonly = super(DueDateAdmin, self).get_readonly_fields(request, obj)
if obj is None:
return default_readonly
if not obj.manual_override_fields:
return default_readonly + [
"title",
"subtitle",
"assignment_type_translation_key",
"date_type_translation_key",
"url",
]
return default_readonly
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "page":
if request.resolver_match.kwargs.get("object_id"):
object_id = int(request.resolver_match.kwargs.get("object_id"))
csd = DueDate.objects.get(id=object_id)
kwargs["queryset"] = Page.objects.descendant_of(
csd.course_session.course.coursepage
).exact_type(LearningContentAttendanceCourse, LearningContentEdoniqTest)
else:
kwargs["queryset"] = Page.objects.none()
return super().formfield_for_foreignkey(db_field, request, **kwargs)