9
9
10
10
from . import app, db
11
11
from .models import Freshman, Packet, FreshSignature, UpperSignature, MiscSignature
12
- from .ldap import ldap_get_active_members, ldap_is_eboard, ldap_is_intromember
12
+ from .ldap import ldap_get_eboard_role, ldap_get_active_rtps, ldap_get_3das, ldap_get_webmasters, \
13
+ ldap_get_drink_admins, ldap_get_constitutional_maintainers, ldap_is_intromember, ldap_get_active_members, \
14
+ ldap_is_on_coop
13
15
14
16
15
17
@app.cli.command("create-secret")
@@ -113,7 +115,14 @@ def create_packets(freshmen_csv):
113
115
end = datetime.combine(base_date, packet_end_time) + timedelta(days=14)
114
116
115
117
print("Fetching data from LDAP...")
116
- all_upper = list(filter(lambda member: not ldap_is_intromember(member), ldap_get_active_members()))
118
+ all_upper = list(filter(
119
+ lambda member: not ldap_is_intromember(member) and not ldap_is_on_coop(member), ldap_get_active_members()))
120
+
121
+ rtp = ldap_get_active_rtps()
122
+ three_da = ldap_get_3das()
123
+ webmaster = ldap_get_webmasters()
124
+ c_m = ldap_get_constitutional_maintainers()
125
+ drink = ldap_get_drink_admins()
117
126
118
127
# Create the new packets and the signatures for each freshman in the given CSV
119
128
freshmen_in_csv = parse_csv(freshmen_csv)
@@ -123,7 +132,14 @@ def create_packets(freshmen_csv):
123
132
db.session.add(packet)
124
133
125
134
for member in all_upper:
126
- db.session.add(UpperSignature(packet=packet, member=member.uid, eboard=ldap_is_eboard(member)))
135
+ sig = UpperSignature(packet=packet, member=member.uid)
136
+ sig.eboard = ldap_get_eboard_role(member)
137
+ sig.active_rtp = member.uid in rtp
138
+ sig.three_da = member.uid in three_da
139
+ sig.webmaster = member.uid in webmaster
140
+ sig.c_m = member.uid in c_m
141
+ sig.drink_admin = member.uid in drink
142
+ db.session.add(sig)
127
143
128
144
for onfloor_freshman in Freshman.query.filter_by(onfloor=True).filter(Freshman.rit_username !=
129
145
freshman.rit_username).all():
@@ -139,32 +155,57 @@ def ldap_sync():
139
155
Updates the upper and misc sigs in the DB to match ldap.
140
156
"""
141
157
print("Fetching data from LDAP...")
142
- all_upper = {member.uid: member for member in filter(lambda member: not ldap_is_intromember(member),
143
- ldap_get_active_members())}
158
+ all_upper = {member.uid: member for member in filter(
159
+ lambda member: not ldap_is_intromember(member) and not ldap_is_on_coop(member), ldap_get_active_members())}
160
+
161
+ rtp = ldap_get_active_rtps()
162
+ three_da = ldap_get_3das()
163
+ webmaster = ldap_get_webmasters()
164
+ c_m = ldap_get_constitutional_maintainers()
165
+ drink = ldap_get_drink_admins()
144
166
145
167
print("Applying updates to the DB...")
146
168
for packet in Packet.query.filter(Packet.end > datetime.now()).all():
147
- # Update the eboard state of all UpperSignatures
169
+ # Update the role state of all UpperSignatures
148
170
for sig in filter(lambda sig: sig.member in all_upper, packet.upper_signatures):
149
- sig.eboard = ldap_is_eboard(all_upper[sig.member])
171
+ sig.eboard = ldap_get_eboard_role(all_upper[sig.member])
172
+ sig.active_rtp = sig.member in rtp
173
+ sig.three_da = sig.member in three_da
174
+ sig.webmaster = sig.member in webmaster
175
+ sig.c_m = sig.member in c_m
176
+ sig.drink_admin = sig.member in drink
150
177
151
178
# Migrate UpperSignatures that are from accounts that are not active anymore
152
179
for sig in filter(lambda sig: sig.member not in all_upper, packet.upper_signatures):
153
180
UpperSignature.query.filter_by(packet_id=packet.id, member=sig.member).delete()
154
181
if sig.signed:
155
- db.session.add(MiscSignature(packet=packet, member=sig.member))
182
+ sig = MiscSignature(packet=packet, member=sig.member)
183
+ db.session.add(sig)
156
184
157
185
# Migrate MiscSignatures that are from accounts that are now active members
158
186
for sig in filter(lambda sig: sig.member in all_upper, packet.misc_signatures):
159
187
MiscSignature.query.filter_by(packet_id=packet.id, member=sig.member).delete()
160
- db.session.add(UpperSignature(packet=packet, member=sig.member,
161
- eboard=ldap_is_eboard(all_upper[sig.member]), signed=True))
188
+ sig = UpperSignature(packet=packet, member=sig.member, signed=True)
189
+ sig.eboard = ldap_get_eboard_role(all_upper[sig.member])
190
+ sig.active_rtp = sig.member in rtp
191
+ sig.three_da = sig.member in three_da
192
+ sig.webmaster = sig.member in webmaster
193
+ sig.c_m = sig.member in c_m
194
+ sig.drink_admin = sig.member in drink
195
+ db.session.add(sig)
162
196
163
197
# Create UpperSignatures for any new active members
164
198
# pylint: disable=cell-var-from-loop
165
199
upper_sigs = set(map(lambda sig: sig.member, packet.upper_signatures))
166
200
for member in filter(lambda member: member not in upper_sigs, all_upper):
167
- db.session.add(UpperSignature(packet=packet, member=member, eboard=ldap_is_eboard(all_upper[member])))
201
+ UpperSignature(packet=packet, member=member)
202
+ sig.eboard = ldap_get_eboard_role(all_upper[sig.member])
203
+ sig.active_rtp = sig.member in rtp
204
+ sig.three_da = sig.member in three_da
205
+ sig.webmaster = sig.member in webmaster
206
+ sig.c_m = sig.member in c_m
207
+ sig.drink_admin = sig.member in drink
208
+ db.session.add(sig)
168
209
169
210
db.session.commit()
170
211
print("Done!")
@@ -190,7 +231,6 @@ def fetch_results():
190
231
print("\tTotal score: {:0.2f}%".format(received.total / required.total * 100))
191
232
print()
192
233
193
- print("\tEboard: {}/{}".format(received.eboard, required.eboard))
194
234
print("\tUpperclassmen: {}/{}".format(received.upper, required.upper))
195
235
print("\tFreshmen: {}/{}".format(received.fresh, required.fresh))
196
236
print("\tMiscellaneous: {}/{}".format(received.misc, required.misc))
0 commit comments