From c7d443e2ee53249c5f669f4761b8dfc19fb14e5c Mon Sep 17 00:00:00 2001 From: Dmitry Belan Date: Mon, 28 Sep 2026 22:40:18 +0300 Subject: [PATCH] Add dashboard tabs for sorting tasks by status --- lmsege/lms/templates/lms/dashboard.html | 42 ++++++++++++++++++++++++- lmsege/lms/views.py | 17 +++++++--- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/lmsege/lms/templates/lms/dashboard.html b/lmsege/lms/templates/lms/dashboard.html index 2cfdb32..a5fb9b1 100644 --- a/lmsege/lms/templates/lms/dashboard.html +++ b/lmsege/lms/templates/lms/dashboard.html @@ -10,10 +10,26 @@ {% if assignments %} + +
+ + + + +
+
{% for assignment in assignments %} {% get_submission submissions assignment.id as sub %} -
+
@@ -146,4 +162,28 @@
{% endif %} + {% endblock %} diff --git a/lmsege/lms/views.py b/lmsege/lms/views.py index c16f2b6..44c531f 100644 --- a/lmsege/lms/views.py +++ b/lmsege/lms/views.py @@ -40,16 +40,23 @@ def dashboard(request): is_published=True ).distinct().order_by('-created_at') - # Check which ones the student has submitted submissions = Submission.objects.filter(student=request.user) - submitted_assignment_ids = submissions.values_list('assignment_id', flat=True) + submissions_dict = {sub.assignment_id: sub for sub in submissions} + + total_count = assignments.count() + waiting_solution_count = sum(1 for a in assignments if a.id not in submissions_dict or submissions_dict[a.id].status == 'IN_PROGRESS') + pending_count = sum(1 for a in assignments if a.id in submissions_dict and submissions_dict[a.id].status == 'PENDING') + graded_count = sum(1 for a in assignments if a.id in submissions_dict and submissions_dict[a.id].status == 'GRADED') 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}, - 'now': timezone.now() + 'submissions': submissions_dict, + 'now': timezone.now(), + 'total_count': total_count, + 'waiting_solution_count': waiting_solution_count, + 'pending_count': pending_count, + 'graded_count': graded_count, }) @login_required