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: