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 ("\t Total score: {:0.2f}%" .format (received .total / required .total * 100 ))
191
232
print ()
192
233
193
- print ("\t Eboard: {}/{}" .format (received .eboard , required .eboard ))
194
234
print ("\t Upperclassmen: {}/{}" .format (received .upper , required .upper ))
195
235
print ("\t Freshmen: {}/{}" .format (received .fresh , required .fresh ))
196
236
print ("\t Miscellaneous: {}/{}" .format (received .misc , required .misc ))
0 commit comments