From 93a5ed9af7c5b851d8aff048a7e4569ff4fc9221 Mon Sep 17 00:00:00 2001 From: Dmitry Belan Date: Sun, 20 Sep 2026 18:09:29 +0300 Subject: [PATCH] fix(lms): js timer form auto-submit and late POST saving --- .../lms/templates/lms/assignment_detail.html | 86 ++++++++++--------- lmsege/lms/views.py | 13 ++- 2 files changed, 53 insertions(+), 46 deletions(-) diff --git a/lmsege/lms/templates/lms/assignment_detail.html b/lmsege/lms/templates/lms/assignment_detail.html index 7e52596..9385c98 100644 --- a/lmsege/lms/templates/lms/assignment_detail.html +++ b/lmsege/lms/templates/lms/assignment_detail.html @@ -125,52 +125,54 @@ {% endif %} diff --git a/lmsege/lms/views.py b/lmsege/lms/views.py index f14117a..3833ff9 100644 --- a/lmsege/lms/views.py +++ b/lmsege/lms/views.py @@ -82,10 +82,15 @@ def assignment_detail(request, pk): elapsed = (now - submission.started_at).total_seconds() allowed = assignment.time_limit * 60 if elapsed > allowed + 60: # 1 minute grace period for network latency - can_submit = False - submission.is_time_expired = True - submission.status = 'PENDING' # Or graded with 0 - submission.save() + if request.method == 'POST': + # Allow saving this final POST, but mark it as expired + submission.is_time_expired = True + # We don't set can_submit = False here so the POST is processed + else: + can_submit = False + submission.is_time_expired = True + submission.status = 'PENDING' # Or graded with 0 + submission.save() else: time_left_seconds = int(allowed - elapsed) if time_left_seconds < 0: