feat(lms): add deadlines and manual assignment closing logic
This commit is contained in:
+14
-2
@@ -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,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user