105 lines
2.9 KiB
Python
105 lines
2.9 KiB
Python
from django.contrib import admin
|
|
from django.db.models import JSONField
|
|
|
|
from vbv_lernwelt.assignment.models import (
|
|
AssignmentCompletion,
|
|
AssignmentCompletionAuditLog,
|
|
)
|
|
from vbv_lernwelt.core.admin import LogAdmin
|
|
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",
|
|
"evaluation_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",
|
|
"assignment_user__first_name",
|
|
"assignment_user__last_name",
|
|
"evaluation_user__email",
|
|
"evaluation_user__first_name",
|
|
"evaluation_user__last_name",
|
|
]
|
|
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)
|
|
|
|
|
|
@admin.register(AssignmentCompletionAuditLog)
|
|
class AssignmentCompletionAuditLogAdmin(LogAdmin):
|
|
date_hierarchy = "created_at"
|
|
list_display = [
|
|
"created_at",
|
|
"assignment",
|
|
"get_circle",
|
|
"assignment_user",
|
|
"evaluation_user",
|
|
"course_session",
|
|
"completion_status",
|
|
"evaluation_points",
|
|
]
|
|
list_filter = [
|
|
"completion_status",
|
|
"assignment__assignment_type",
|
|
"course_session__course",
|
|
"course_session",
|
|
]
|
|
search_fields = [
|
|
"assignment_user__email",
|
|
"assignment_user__first_name",
|
|
"assignment_user__last_name",
|
|
"evaluation_user__email",
|
|
"evaluation_user__first_name",
|
|
"evaluation_user__last_name",
|
|
]
|
|
|
|
def get_circle(self, obj):
|
|
try:
|
|
return obj.learning_content_page.specific.get_circle().title
|
|
except Exception:
|
|
return ""
|
|
|
|
get_circle.short_description = "Circle"
|