feat(lms): add deadlines and manual assignment closing logic

This commit is contained in:
Dmitry Belan
2026-09-20 17:46:56 +03:00
parent 2cf38ef27e
commit 4b1ea99a4d
5 changed files with 35 additions and 4 deletions
+14 -2
View File
@@ -44,10 +44,12 @@ def dashboard(request):
submissions = Submission.objects.filter(student=request.user)
submitted_assignment_ids = submissions.values_list('assignment_id', flat=True)
from django.utils import timezone
return render(request, 'lms/dashboard.html', {
'assignments': assignments,
'submitted_assignment_ids': submitted_assignment_ids,
'submissions': {sub.assignment_id: sub for sub in submissions}
'submissions': {sub.assignment_id: sub for sub in submissions},
'now': timezone.now()
})
@login_required
@@ -58,6 +60,13 @@ def assignment_detail(request, pk):
# Try to get existing submission
submission = Submission.objects.filter(assignment=assignment, student=request.user).first()
from django.utils import timezone
can_submit = True
if assignment.is_closed:
can_submit = False
if assignment.deadline and timezone.now() > assignment.deadline:
can_submit = False
if submission:
if request.method == 'POST':
@@ -65,7 +74,9 @@ def assignment_detail(request, pk):
return redirect('lms:dashboard')
form = None
else:
if request.method == 'POST':
if not can_submit:
form = None
elif request.method == 'POST':
form = AnswersForm(request.POST, request.FILES, questions=questions)
if form.is_valid():
submission = Submission.objects.create(assignment=assignment, student=request.user)
@@ -153,4 +164,5 @@ def assignment_detail(request, pk):
'submission': submission,
'questions': questions,
'question_fields': question_fields,
'can_submit': can_submit,
})