diff --git a/lmsege/lms/admin.py b/lmsege/lms/admin.py
index 923e4d5..04f79af 100644
--- a/lmsege/lms/admin.py
+++ b/lmsege/lms/admin.py
@@ -125,23 +125,12 @@ class SubmissionAdmin(ModelAdmin):
@admin.display(description='Статистика (сохраните оценку в формате X/Y, чтобы обновить)')
def statistics(self, obj):
- if not obj or not obj.grade:
+ stats = obj.get_statistics() if obj else None
+
+ if not stats:
return format_html('
Оценка не выставлена или имеет неверный формат. Укажите оценку в формате "X/Y" (например, "3/27").
')
try:
- parts = obj.grade.split('/')
- earned = float(parts[0].strip())
- total = float(parts[1].strip())
- percentage = (earned / total) * 100 if total > 0 else 0
- percentage_str = f"{percentage:.1f}"
-
- is_passed = percentage >= 40
- threshold_text = "Выше порога" if is_passed else "Ниже порога (Мин: 40%)"
- color = "#2ea043" if is_passed else "#f85149"
-
- total_int = int(total) if total.is_integer() else total
- threshold_points = int(total * 0.4)
-
return format_html(
'''
@@ -173,17 +162,16 @@ class SubmissionAdmin(ModelAdmin):