vbv/server/vbv_lernwelt/assignment/admin.py

56 lines
1.6 KiB
Python

from django.contrib import admin
from django.db.models import JSONField
from vbv_lernwelt.assignment.models import AssignmentCompletion
from vbv_lernwelt.core.admin_utils import PrettyJSONWidget
@admin.register(AssignmentCompletion)
class AssignmentCompletionAdmin(admin.ModelAdmin):
formfield_overrides = {
JSONField: {"widget": PrettyJSONWidget(attrs={"rows": 16, "cols": 80})},
}
date_hierarchy = "created_at"
list_display = [
"id",
"assignment",
"get_circle",
"assignment_user",
"course_session",
"completion_status",
"evaluation_points",
"evaluation_points_deducted",
]
list_filter = [
"completion_status",
"assignment__assignment_type",
"course_session__course",
"course_session",
]
search_fields = ["assignment_user__email"]
readonly_fields = [
"assignment_user",
"assignment",
"completion_data",
"course_session",
"learning_content_page",
"evaluation_points",
"submitted_at",
"evaluation_user",
"evaluation_submitted_at",
"evaluation_points_deducted_user",
]
def get_circle(self, obj):
try:
return obj.learning_content_page.specific.get_circle().title
except Exception:
return ""
get_circle.short_description = "Circle"
def save_model(self, request, obj, form, change):
if change and "evaluation_points_deducted" in form.changed_data:
obj.evaluation_points_deducted_user = request.user
super().save_model(request, obj, form, change)