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