99from conditional .util .ldap import ldap_get_member
1010from conditional .util .ldap import ldap_get_active_members
1111
12- from conditional .models .models import MemberCommitteeAttendance
1312from conditional .models .models import MemberHouseMeetingAttendance
1413from conditional .models .models import MajorProject
1514from conditional .models .models import Conditional
1918
2019from conditional .util .housing import get_queue_position
2120from conditional .util .flask import render_template
22- from conditional .util .member import get_freshman_data , get_voting_members
21+ from conditional .util .member import get_freshman_data , get_voting_members , get_cm , get_hm
22+
23+ from conditional import start_of_year
2324
2425logger = structlog .get_logger ()
2526
@@ -55,18 +56,13 @@ def display_dashboard():
5556 data ['freshman' ] = False
5657
5758 spring = {}
58- c_meetings = [m .meeting_id for m in
59- MemberCommitteeAttendance .query .filter (
60- MemberCommitteeAttendance .uid == member .uid
61- ) if CommitteeMeeting .query .filter (
62- CommitteeMeeting .id == m .meeting_id ).first ().approved ]
59+ c_meetings = get_cm (member )
6360 spring ['committee_meetings' ] = len (c_meetings )
64- h_meetings = [(m .meeting_id , m .attendance_status ) for m in
65- MemberHouseMeetingAttendance .query .filter (
66- MemberHouseMeetingAttendance .uid == member .uid )]
61+ h_meetings = [(m .meeting_id , m .attendance_status ) for m in get_hm (member )]
6762 spring ['hm_missed' ] = len ([h for h in h_meetings if h [1 ] == "Absent" ])
68- eval_entry = SpringEval .query .filter (SpringEval .uid == member .uid
69- and SpringEval .active ).first ()
63+ eval_entry = SpringEval .query .filter (SpringEval .uid == member .uid ,
64+ SpringEval .date_created > start_of_year (),
65+ SpringEval .active == True ).first () # pylint: disable=singleton-comparison
7066 if eval_entry is not None :
7167 spring ['status' ] = eval_entry .status
7268 else :
@@ -92,7 +88,8 @@ def display_dashboard():
9288 'status' : p .status ,
9389 'description' : p .description
9490 } for p in
95- MajorProject .query .filter (MajorProject .uid == member .uid )]
91+ MajorProject .query .filter (MajorProject .uid == member .uid ,
92+ MajorProject .date > start_of_year ())]
9693
9794 data ['major_projects_count' ] = len (data ['major_projects' ])
9895
@@ -112,7 +109,9 @@ def display_dashboard():
112109 'description' : c .description ,
113110 'status' : c .status
114111 } for c in
115- Conditional .query .filter (Conditional .uid == member .uid )]
112+ Conditional .query .filter (
113+ Conditional .uid == member .uid ,
114+ Conditional .date_due > start_of_year ())]
116115 data ['conditionals' ] = conditionals
117116 data ['conditionals_len' ] = len (conditionals )
118117
@@ -121,18 +120,23 @@ def display_dashboard():
121120 'type' : m .committee ,
122121 'datetime' : m .timestamp .date ()
123122 } for m in CommitteeMeeting .query .filter (
124- CommitteeMeeting .id .in_ (c_meetings )
123+ CommitteeMeeting .id .in_ (c_meetings ),
124+ CommitteeMeeting .timestamp > start_of_year ()
125125 )]
126126
127127 hm_attendance = [
128128 {
129129 'reason' : m .excuse ,
130- 'datetime' : HouseMeeting .query .filter (
131- HouseMeeting .id == m .meeting_id ).first ().date
130+ 'datetime' : m .date
132131 } for m in
133- MemberHouseMeetingAttendance .query .filter (
134- MemberHouseMeetingAttendance .uid == member .uid
135- ).filter (MemberHouseMeetingAttendance .attendance_status == "Absent" )]
132+ MemberHouseMeetingAttendance .query .outerjoin (
133+ HouseMeeting ,
134+ MemberHouseMeetingAttendance .meeting_id == HouseMeeting .id ).with_entities (
135+ MemberHouseMeetingAttendance .excuse ,
136+ HouseMeeting .date ).filter (
137+ MemberHouseMeetingAttendance .uid == member .uid ,
138+ MemberHouseMeetingAttendance .attendance_status == "Absent" ,
139+ HouseMeeting .date > start_of_year ())]
136140
137141 data ['cm_attendance' ] = cm_attendance
138142 data ['cm_attendance_len' ] = len (cm_attendance )
0 commit comments