33from rest_framework .permissions import IsAuthenticated
44from rest_framework .response import Response
55
6+ from django .utils import timezone
7+
68from users .permissions import IsProfessor , IsStaff
79from utils .pdfgen import pdfgen
810from utils .reports import (
@@ -77,11 +79,17 @@ def download_grades_pdf(self, request, pk=None):
7779 student = self .get_object ()
7880 subjects = get_subject_names ()
7981 data = {}
82+ current_year = timezone .now ().year
83+ all_grades = Grade .objects .filter (student = student , year = current_year )
84+
8085 for subject in subjects :
81- data [subject ] = Grade .objects .filter (
82- student = student ,
83- subject__full_name = subject ,
84- )
86+ # Initialize with None for each bimester
87+ bimester_grades = [None , None , None , None ]
88+ for grade in all_grades .filter (subject__full_name = subject ):
89+ bimester_num = int (grade .bimester [0 ]) # Extract the numeric part (e.g., "1B" -> 1)
90+ if 1 <= bimester_num <= 4 :
91+ bimester_grades [bimester_num - 1 ] = grade .value
92+ data [subject ] = bimester_grades
8593 return pdfgen (
8694 "grades.html" ,
8795 {"student" : student , "data" : data },
@@ -91,7 +99,10 @@ def download_grades_pdf(self, request, pk=None):
9199 @action (detail = True , methods = ["get" ], url_path = "download-presence" )
92100 def download_presence_pdf (self , request , pk = None ):
93101 student = self .get_object ()
94- presence_records = Presence .objects .filter (student = student )
102+ current_year = timezone .now ().year
103+ presence_records = Presence .objects .filter (
104+ student = student , date__year = current_year
105+ ).order_by ('date' )
95106 return pdfgen (
96107 "presence.html" ,
97108 {"student" : student , "data" : presence_records },
@@ -108,10 +119,9 @@ def academic_report(self, request, pk=None):
108119 @action (detail = True , methods = ["get" ], url_path = "download-academic-report" )
109120 def download_academic_report (self , request , pk = None ):
110121 """Download comprehensive academic report PDF"""
111- from django .utils import timezone as tz
112-
122+ current_year = timezone .now ().year
113123 student = self .get_object ()
114- report = generate_student_academic_report (student )
124+ report = generate_student_academic_report (student , year = current_year )
115125
116126 context = {
117127 "student" : student ,
@@ -356,11 +366,10 @@ def financial_report(self, request):
356366 @action (detail = False , methods = ["get" ], url_path = "download-financial-report" )
357367 def download_financial_report (self , request ):
358368 """Download financial report PDF"""
359- from django .utils import timezone as tz
360-
369+ current_year = timezone .now ().year
361370 student_id = request .query_params .get ("student_id" )
362371 student = Student .objects .get (id = student_id ) if student_id else None
363- report = generate_financial_report (student )
372+ report = generate_financial_report (student , year = current_year )
364373
365374 context = {
366375 "student" : student ,
0 commit comments