From 32efc848bca8d19b0f69096797c0670721085be6 Mon Sep 17 00:00:00 2001 From: Zaki Benaissa Date: Wed, 31 Jan 2024 22:51:37 +0100 Subject: [PATCH] feat: display students gender distribution in dashboard --- accounts/models.py | 7 +++++++ core/views.py | 5 ++++- templates/core/dashboard.html | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/accounts/models.py b/accounts/models.py index 4090e6c..23e5906 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -165,6 +165,13 @@ class Student(models.Model): def __str__(self): return self.student.get_full_name + @classmethod + def get_gender_count(cls): + males_count = Student.objects.filter(student__gender="M").count() + females_count = Student.objects.filter(student__gender="F").count() + + return {"M": males_count, "F": females_count} + def get_absolute_url(self): return reverse("profile_single", kwargs={"id": self.id}) diff --git a/core/views.py b/core/views.py index e2dceeb..241d290 100644 --- a/core/views.py +++ b/core/views.py @@ -4,7 +4,7 @@ from django.contrib.auth.decorators import login_required from django.conf import settings from accounts.decorators import admin_required, lecturer_required -from accounts.models import User +from accounts.models import User, Student from .forms import SessionForm, SemesterForm, NewsAndEventsForm from .models import * @@ -26,10 +26,13 @@ def home_view(request): @admin_required def dashboard_view(request): logs = ActivityLog.objects.all().order_by("-created_at")[:10] + gender_count = Student.get_gender_count() context = { "student_count": User.get_student_count(), "lecturer_count": User.get_lecturer_count(), "superuser_count": User.get_superuser_count(), + "males_count": gender_count["M"], + "females_count": gender_count["F"], "logs": logs, } return render(request, "core/dashboard.html", context) diff --git a/templates/core/dashboard.html b/templates/core/dashboard.html index d872b18..0232003 100644 --- a/templates/core/dashboard.html +++ b/templates/core/dashboard.html @@ -478,7 +478,7 @@ ], datasets: [{ label: "Students Gender Dataset", - data: [56, 44], + data: [{{ males_count }}, {{ females_count }}], backgroundColor: [ 'rgb(255, 99, 132)', 'rgb(54, 162, 235)'