diff --git a/lmsege/lms/admin.py b/lmsege/lms/admin.py index 9c74992..8fbe1d6 100644 --- a/lmsege/lms/admin.py +++ b/lmsege/lms/admin.py @@ -99,6 +99,8 @@ class AnswerInline(StackedInline): def has_add_permission(self, request, obj=None): return False +from django.utils.html import format_html + @admin.register(Submission) class SubmissionAdmin(ModelAdmin): change_list_template = "admin/lms/submission/change_list.html" @@ -107,10 +109,77 @@ class SubmissionAdmin(ModelAdmin): search_fields = ('student__username', 'assignment__title') inlines = [AnswerInline] + fieldsets = ( + ('Параметры проверки и оценка', { + 'fields': ('statistics', ('assignment', 'student'), ('grade', 'status'), ('is_time_expired', 'is_late'), 'teacher_feedback') + }), + ('Временные метки', { + 'fields': (('started_at', 'submitted_at'),) + }), + ) + def get_readonly_fields(self, request, obj=None): if obj: - return ('assignment', 'student', 'is_time_expired', 'is_late', 'started_at', 'submitted_at') - return ('is_time_expired', 'is_late', 'started_at', 'submitted_at') + return ('statistics', 'assignment', 'student', 'is_time_expired', 'is_late', 'started_at', 'submitted_at') + return ('statistics', 'is_time_expired', 'is_late', 'started_at', 'submitted_at') + + @admin.display(description='Статистика (сохраните оценку в формате X/Y, чтобы обновить)') + def statistics(self, obj): + if not obj or not obj.grade: + return format_html('