11from accounts .models import ExecutiveMember
2- from config .models import SIG
32from django .db .models import Count
43from django .shortcuts import get_object_or_404
54from django .shortcuts import render
65from virtual_expo .forms import ReportFilterForm
76from virtual_expo .models import Report
87from virtual_expo .models import ReportMember
9- from virtual_expo .models import ReportType
108
119from corpus .decorators import ensure_exec_membership
1210
@@ -27,25 +25,30 @@ def home(request):
2725
2826
2927def reports_by_year (request , year ):
30- reports = Report .objects .filter (year = year , approved = True ).order_by ("-pk" )
28+ reports = (
29+ Report .objects .filter (year = year , approved = True )
30+ .select_related ("report_type" )
31+ .prefetch_related ("reportmember_set__member__sig" )
32+ .order_by ("-pk" )
33+ )
3134
3235 form = ReportFilterForm (request .GET )
3336 if form .is_valid ():
3437 report_type = int (form .cleaned_data .get ("report_type" ))
3538 if report_type != 0 :
36- reports = reports .filter (report_type = ReportType . objects . get ( pk = report_type ) )
39+ reports = reports .filter (report_type_id = report_type )
3740
3841 sig = int (form .cleaned_data .get ("sig" ))
3942 if sig == - 1 :
4043 reports = reports .annotate (
4144 sig_count = Count ("reportmember__member__sig" , distinct = True )
4245 ).filter (sig_count__gte = 2 )
4346 elif sig != 0 :
44- reports = reports .filter (reportmember__member__sig = SIG . objects . get ( pk = sig ) )
47+ reports = reports .filter (reportmember__member__sig_id = sig )
4548
4649 reports = reports .distinct ()
47- args = {"reports" : reports , "year" : year , "form" : form }
4850
51+ args = {"reports" : reports , "year" : year , "form" : form }
4952 return render (request , "virtual_expo/reports_by_year.html" , args )
5053
5154
0 commit comments