53 lines
1.7 KiB
Python
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)
|