Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions corpus/virtual_expo/views.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
from accounts.models import ExecutiveMember
from config.models import SIG
from django.db.models import Count
from django.shortcuts import get_object_or_404
from django.shortcuts import render
from virtual_expo.forms import ReportFilterForm
from virtual_expo.models import Report
from virtual_expo.models import ReportMember
from virtual_expo.models import ReportType

from corpus.decorators import ensure_exec_membership

Expand All @@ -27,25 +25,30 @@ def home(request):


def reports_by_year(request, year):
reports = Report.objects.filter(year=year, approved=True).order_by("-pk")
reports = (
Report.objects.filter(year=year, approved=True)
.select_related("report_type")
.prefetch_related("reportmember_set__member__sig")
.order_by("-created_at")
)

form = ReportFilterForm(request.GET)
if form.is_valid():
report_type = int(form.cleaned_data.get("report_type"))
if report_type != 0:
reports = reports.filter(report_type=ReportType.objects.get(pk=report_type))
reports = reports.filter(report_type_id=report_type)

sig = int(form.cleaned_data.get("sig"))
if sig == -1:
reports = reports.annotate(
sig_count=Count("reportmember__member__sig", distinct=True)
).filter(sig_count__gte=2)
elif sig != 0:
reports = reports.filter(reportmember__member__sig=SIG.objects.get(pk=sig))
reports = reports.filter(reportmember__member__sig_id=sig)

reports = reports.distinct()
args = {"reports": reports, "year": year, "form": form}

args = {"reports": reports, "year": year, "form": form}
return render(request, "virtual_expo/reports_by_year.html", args)


Expand Down