Skip to content

Commit bbe5c56

Browse files
committed
remove frosh from voting lists if they don't have requirements after 6 weeks
1 parent 5dc992c commit bbe5c56

File tree

1 file changed

+105
-70
lines changed

1 file changed

+105
-70
lines changed

conditional/util/member.py

Lines changed: 105 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,33 @@
2323
def get_voting_members():
2424

2525
if datetime.today() < datetime(start_of_year().year, 12, 31):
26-
semester = 'Fall'
26+
semester = "Fall"
2727
else:
28-
semester = 'Spring'
28+
semester = "Spring"
2929

3030
active_members = set(member.uid for member in ldap_get_active_members())
3131
intro_members = set(member.uid for member in ldap_get_intro_members())
32-
on_coop = set(member.uid for member in CurrentCoops.query.filter(
33-
CurrentCoops.date_created > start_of_year(),
34-
CurrentCoops.semester == semester).all())
32+
on_coop = set(
33+
member.uid
34+
for member in CurrentCoops.query.filter(
35+
CurrentCoops.date_created > start_of_year(),
36+
CurrentCoops.semester == semester,
37+
).all()
38+
)
3539
voting_list = list(active_members - intro_members - on_coop)
36-
voting_list = list(username for username in voting_list if gatekeep_status(username))
3740

3841
passed_fall = FreshmanEvalData.query.filter(
3942
FreshmanEvalData.freshman_eval_result == "Passed",
40-
FreshmanEvalData.eval_date > start_of_year()
43+
FreshmanEvalData.eval_date > start_of_year(),
4144
).distinct()
4245

4346
for intro_member in passed_fall:
4447
if intro_member.uid not in voting_list:
4548
voting_list.append(intro_member.uid)
4649

50+
voting_list = list(
51+
username for username in voting_list if gatekeep_status(username)
52+
)
4753
return voting_list
4854

4955

@@ -59,93 +65,122 @@ def get_members_info():
5965
onfloor = ldap_is_onfloor(account)
6066
room = ldap_get_roomnumber(account)
6167
hp = account.housingPoints
62-
member_list.append({
63-
"uid": uid,
64-
"name": name,
65-
"active": active,
66-
"onfloor": onfloor,
67-
"room": room,
68-
"hp": hp
69-
})
68+
member_list.append(
69+
{
70+
"uid": uid,
71+
"name": name,
72+
"active": active,
73+
"onfloor": onfloor,
74+
"room": room,
75+
"hp": hp,
76+
}
77+
)
7078

7179
return member_list
7280

7381

7482
def get_freshman_data(user_name):
7583
freshman = {}
76-
freshman_data = FreshmanEvalData.query.filter(FreshmanEvalData.uid == user_name).first()
84+
freshman_data = FreshmanEvalData.query.filter(
85+
FreshmanEvalData.uid == user_name
86+
).first()
7787

7888
if freshman_data is None:
7989
return None
80-
freshman['status'] = freshman_data.freshman_eval_result
90+
freshman["status"] = freshman_data.freshman_eval_result
8191
# number of committee meetings attended
82-
c_meetings = [m.meeting_id for m in
83-
MemberCommitteeAttendance.query.filter(
84-
MemberCommitteeAttendance.uid == user_name
85-
) if CommitteeMeeting.query.filter(
86-
CommitteeMeeting.id == m.meeting_id).first().approved]
87-
freshman['committee_meetings'] = len(c_meetings)
92+
c_meetings = [
93+
m.meeting_id
94+
for m in MemberCommitteeAttendance.query.filter(
95+
MemberCommitteeAttendance.uid == user_name
96+
)
97+
if CommitteeMeeting.query.filter(CommitteeMeeting.id == m.meeting_id)
98+
.first()
99+
.approved
100+
]
101+
freshman["committee_meetings"] = len(c_meetings)
88102
# technical seminar total
89-
t_seminars = [s.seminar_id for s in
90-
MemberSeminarAttendance.query.filter(
91-
MemberSeminarAttendance.uid == user_name
92-
) if TechnicalSeminar.query.filter(
93-
TechnicalSeminar.id == s.seminar_id).first().approved]
94-
freshman['ts_total'] = len(t_seminars)
95-
attendance = [m.name for m in TechnicalSeminar.query.filter(
96-
TechnicalSeminar.id.in_(t_seminars)
97-
)]
98-
99-
freshman['ts_list'] = attendance
100-
101-
h_meetings = [(m.meeting_id, m.attendance_status) for m in
102-
MemberHouseMeetingAttendance.query.filter(
103-
MemberHouseMeetingAttendance.uid == user_name)]
104-
freshman['hm_missed'] = len([h for h in h_meetings if h[1] == "Absent"])
105-
freshman['social_events'] = freshman_data.social_events
106-
freshman['general_comments'] = freshman_data.other_notes
107-
freshman['sig_missed'] = freshman_data.signatures_missed
108-
freshman['eval_date'] = freshman_data.eval_date
103+
t_seminars = [
104+
s.seminar_id
105+
for s in MemberSeminarAttendance.query.filter(
106+
MemberSeminarAttendance.uid == user_name
107+
)
108+
if TechnicalSeminar.query.filter(TechnicalSeminar.id == s.seminar_id)
109+
.first()
110+
.approved
111+
]
112+
freshman["ts_total"] = len(t_seminars)
113+
attendance = [
114+
m.name
115+
for m in TechnicalSeminar.query.filter(TechnicalSeminar.id.in_(t_seminars))
116+
]
117+
118+
freshman["ts_list"] = attendance
119+
120+
h_meetings = [
121+
(m.meeting_id, m.attendance_status)
122+
for m in MemberHouseMeetingAttendance.query.filter(
123+
MemberHouseMeetingAttendance.uid == user_name
124+
)
125+
]
126+
freshman["hm_missed"] = len([h for h in h_meetings if h[1] == "Absent"])
127+
freshman["social_events"] = freshman_data.social_events
128+
freshman["general_comments"] = freshman_data.other_notes
129+
freshman["sig_missed"] = freshman_data.signatures_missed
130+
freshman["eval_date"] = freshman_data.eval_date
109131
return freshman
110132

111133

112134
@service_cache(maxsize=1024)
113135
def get_onfloor_members():
114-
return [uid for uid in [members.uid for members in ldap_get_active_members()]
115-
if uid in [members.uid for members in ldap_get_onfloor_members()]]
136+
return [
137+
uid
138+
for uid in [members.uid for members in ldap_get_active_members()]
139+
if uid in [members.uid for members in ldap_get_onfloor_members()]
140+
]
116141

117142

118143
def get_cm(member):
119-
c_meetings = [{
120-
"uid": cm.uid,
121-
"timestamp": cm.timestamp,
122-
"committee": cm.committee
123-
} for cm in CommitteeMeeting.query.join(
124-
MemberCommitteeAttendance,
125-
MemberCommitteeAttendance.meeting_id == CommitteeMeeting.id
126-
).with_entities(
144+
c_meetings = [
145+
{"uid": cm.uid, "timestamp": cm.timestamp, "committee": cm.committee}
146+
for cm in CommitteeMeeting.query.join(
147+
MemberCommitteeAttendance,
148+
MemberCommitteeAttendance.meeting_id == CommitteeMeeting.id,
149+
)
150+
.with_entities(
127151
MemberCommitteeAttendance.uid,
128152
CommitteeMeeting.timestamp,
129-
CommitteeMeeting.committee
130-
).filter(
131-
CommitteeMeeting.timestamp > start_of_year(),
132-
MemberCommitteeAttendance.uid == member.uid,
133-
CommitteeMeeting.approved == True # pylint: disable=singleton-comparison
134-
).all()]
153+
CommitteeMeeting.committee,
154+
)
155+
.filter(
156+
CommitteeMeeting.timestamp > start_of_year(),
157+
MemberCommitteeAttendance.uid == member.uid,
158+
CommitteeMeeting.approved == True, # pylint: disable=singleton-comparison
159+
)
160+
.all()
161+
]
135162
return c_meetings
136163

137164

138165
def get_hm(member, only_absent=False):
139-
h_meetings = MemberHouseMeetingAttendance.query.outerjoin(
140-
HouseMeeting,
141-
MemberHouseMeetingAttendance.meeting_id == HouseMeeting.id).with_entities(
142-
MemberHouseMeetingAttendance.meeting_id,
143-
MemberHouseMeetingAttendance.attendance_status,
144-
HouseMeeting.date).filter(
145-
HouseMeeting.date > start_of_year(),
146-
MemberHouseMeetingAttendance.uid == member.uid)
166+
h_meetings = (
167+
MemberHouseMeetingAttendance.query.outerjoin(
168+
HouseMeeting, MemberHouseMeetingAttendance.meeting_id == HouseMeeting.id
169+
)
170+
.with_entities(
171+
MemberHouseMeetingAttendance.meeting_id,
172+
MemberHouseMeetingAttendance.attendance_status,
173+
HouseMeeting.date,
174+
)
175+
.filter(
176+
HouseMeeting.date > start_of_year(),
177+
MemberHouseMeetingAttendance.uid == member.uid,
178+
)
179+
)
147180
if only_absent:
148-
h_meetings = h_meetings.filter(MemberHouseMeetingAttendance.attendance_status == "Absent")
181+
h_meetings = h_meetings.filter(
182+
MemberHouseMeetingAttendance.attendance_status == "Absent"
183+
)
149184
return h_meetings
150185

151186

@@ -154,8 +189,8 @@ def req_cm(member):
154189
# Get the number of required committee meetings based on if the member
155190
# is going on co-op in the current operating session.
156191
co_op = CurrentCoops.query.filter(
157-
CurrentCoops.uid == member.uid,
158-
CurrentCoops.date_created > start_of_year()).first()
192+
CurrentCoops.uid == member.uid, CurrentCoops.date_created > start_of_year()
193+
).first()
159194
if co_op:
160195
return 15
161196
return 30

0 commit comments

Comments
 (0)