feat: display students gender distribution in dashboard

This commit is contained in:
Zaki Benaissa 2024-01-31 22:51:37 +01:00
parent 571701d957
commit 32efc848bc
3 changed files with 12 additions and 2 deletions

View File

@ -165,6 +165,13 @@ class Student(models.Model):
def __str__(self): def __str__(self):
return self.student.get_full_name 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): def get_absolute_url(self):
return reverse("profile_single", kwargs={"id": self.id}) return reverse("profile_single", kwargs={"id": self.id})

View File

@ -4,7 +4,7 @@ from django.contrib.auth.decorators import login_required
from django.conf import settings from django.conf import settings
from accounts.decorators import admin_required, lecturer_required 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 .forms import SessionForm, SemesterForm, NewsAndEventsForm
from .models import * from .models import *
@ -26,10 +26,13 @@ def home_view(request):
@admin_required @admin_required
def dashboard_view(request): def dashboard_view(request):
logs = ActivityLog.objects.all().order_by("-created_at")[:10] logs = ActivityLog.objects.all().order_by("-created_at")[:10]
gender_count = Student.get_gender_count()
context = { context = {
"student_count": User.get_student_count(), "student_count": User.get_student_count(),
"lecturer_count": User.get_lecturer_count(), "lecturer_count": User.get_lecturer_count(),
"superuser_count": User.get_superuser_count(), "superuser_count": User.get_superuser_count(),
"males_count": gender_count["M"],
"females_count": gender_count["F"],
"logs": logs, "logs": logs,
} }
return render(request, "core/dashboard.html", context) return render(request, "core/dashboard.html", context)

View File

@ -478,7 +478,7 @@
], ],
datasets: [{ datasets: [{
label: "Students Gender Dataset", label: "Students Gender Dataset",
data: [56, 44], data: [{{ males_count }}, {{ females_count }}],
backgroundColor: [ backgroundColor: [
'rgb(255, 99, 132)', 'rgb(255, 99, 132)',
'rgb(54, 162, 235)' 'rgb(54, 162, 235)'