16
16
ldap_is_on_coop
17
17
18
18
19
- @app .cli .command (" create-secret" )
19
+ @app .cli .command (' create-secret' )
20
20
def create_secret ():
21
21
"""
22
22
Generates a securely random token. Useful for creating a value for use in the "SECRET_KEY" config setting.
@@ -33,37 +33,37 @@ class CSVFreshman:
33
33
def __init__ (self , row ):
34
34
self .name = row [0 ]
35
35
self .rit_username = row [3 ]
36
- self .onfloor = row [1 ] == " TRUE"
36
+ self .onfloor = row [1 ] == ' TRUE'
37
37
38
38
39
39
def parse_csv (freshmen_csv ):
40
- print (" Parsing file..." )
40
+ print (' Parsing file...' )
41
41
try :
42
42
with open (freshmen_csv , newline = '' ) as freshmen_csv_file :
43
43
return {freshman .rit_username : freshman for freshman in map (CSVFreshman , csv .reader (freshmen_csv_file ))}
44
44
except Exception as e :
45
- print (" Failure while parsing CSV" )
45
+ print (' Failure while parsing CSV' )
46
46
raise e
47
47
48
48
49
49
def input_date (prompt ):
50
50
while True :
51
51
try :
52
- date_str = input (prompt + " (format: MM/DD/YYYY): " )
53
- return datetime .strptime (date_str , " %m/%d/%Y" ).date ()
52
+ date_str = input (prompt + ' (format: MM/DD/YYYY): ' )
53
+ return datetime .strptime (date_str , ' %m/%d/%Y' ).date ()
54
54
except ValueError :
55
55
pass
56
56
57
57
58
- @app .cli .command (" sync-freshmen" )
59
- @click .argument (" freshmen_csv" )
58
+ @app .cli .command (' sync-freshmen' )
59
+ @click .argument (' freshmen_csv' )
60
60
def sync_freshmen (freshmen_csv ):
61
61
"""
62
62
Updates the freshmen entries in the DB to match the given CSV.
63
63
"""
64
64
freshmen_in_csv = parse_csv (freshmen_csv )
65
65
66
- print (" Syncing contents with the DB..." )
66
+ print (' Syncing contents with the DB...' )
67
67
freshmen_in_db = {freshman .rit_username : freshman for freshman in Freshman .query .all ()}
68
68
69
69
for csv_freshman in freshmen_in_csv .values ():
@@ -98,25 +98,25 @@ def sync_freshmen(freshmen_csv):
98
98
db .session .add (FreshSignature (packet = packet , freshman = freshmen_in_db [csv_freshman .rit_username ]))
99
99
100
100
db .session .commit ()
101
- print (" Done!" )
101
+ print (' Done!' )
102
102
103
103
104
- @app .cli .command (" create-packets" )
105
- @click .argument (" freshmen_csv" )
104
+ @app .cli .command (' create-packets' )
105
+ @click .argument (' freshmen_csv' )
106
106
def create_packets (freshmen_csv ):
107
107
"""
108
108
Creates a new packet season for each of the freshmen in the given CSV.
109
109
"""
110
110
print ("WARNING: The 'sync-freshmen' command must be run first to ensure that the state of floor is up to date." )
111
- if input (" Continue? (y/N): " ).lower () != "y" :
111
+ if input (' Continue? (y/N): ' ).lower () != 'y' :
112
112
return
113
113
114
114
# Collect the necessary data
115
- base_date = input_date (" Input the first day of packet season" )
115
+ base_date = input_date (' Input the first day of packet season' )
116
116
start = datetime .combine (base_date , packet_start_time )
117
117
end = datetime .combine (base_date , packet_end_time ) + timedelta (days = 14 )
118
118
119
- print (" Fetching data from LDAP..." )
119
+ print (' Fetching data from LDAP...' )
120
120
all_upper = list (filter (
121
121
lambda member : not ldap_is_intromember (member ) and not ldap_is_on_coop (member ), ldap_get_active_members ()))
122
122
@@ -131,7 +131,7 @@ def create_packets(freshmen_csv):
131
131
132
132
# Create the new packets and the signatures for each freshman in the given CSV
133
133
freshmen_in_csv = parse_csv (freshmen_csv )
134
- print (" Creating DB entries and sending emails..." )
134
+ print (' Creating DB entries and sending emails...' )
135
135
for freshman in Freshman .query .filter (Freshman .rit_username .in_ (freshmen_in_csv )).all ():
136
136
packet = Packet (freshman = freshman , start = start , end = end )
137
137
db .session .add (packet )
@@ -153,15 +153,15 @@ def create_packets(freshmen_csv):
153
153
db .session .add (FreshSignature (packet = packet , freshman = onfloor_freshman ))
154
154
155
155
db .session .commit ()
156
- print (" Done!" )
156
+ print (' Done!' )
157
157
158
158
159
- @app .cli .command (" ldap-sync" )
159
+ @app .cli .command (' ldap-sync' )
160
160
def ldap_sync ():
161
161
"""
162
162
Updates the upper and misc sigs in the DB to match ldap.
163
163
"""
164
- print (" Fetching data from LDAP..." )
164
+ print (' Fetching data from LDAP...' )
165
165
all_upper = {member .uid : member for member in filter (
166
166
lambda member : not ldap_is_intromember (member ) and not ldap_is_on_coop (member ), ldap_get_active_members ())}
167
167
@@ -171,7 +171,7 @@ def ldap_sync():
171
171
c_m = ldap_get_constitutional_maintainers ()
172
172
drink = ldap_get_drink_admins ()
173
173
174
- print (" Applying updates to the DB..." )
174
+ print (' Applying updates to the DB...' )
175
175
for packet in Packet .query .filter (Packet .end > datetime .now ()).all ():
176
176
# Update the role state of all UpperSignatures
177
177
for sig in filter (lambda sig : sig .member in all_upper , packet .upper_signatures ):
@@ -215,89 +215,89 @@ def ldap_sync():
215
215
db .session .add (sig )
216
216
217
217
db .session .commit ()
218
- print (" Done!" )
218
+ print (' Done!' )
219
219
220
220
221
- @app .cli .command (" fetch-results" )
221
+ @app .cli .command (' fetch-results' )
222
222
def fetch_results ():
223
223
"""
224
224
Fetches and prints the results from a given packet season.
225
225
"""
226
226
end_date = datetime .combine (input_date ("Enter the last day of the packet season you'd like to retrieve results "
227
- " from" ), packet_end_time )
227
+ ' from' ), packet_end_time )
228
228
229
229
for packet in Packet .query .filter_by (end = end_date ).all ():
230
230
print ()
231
231
232
- print (" {} ({}):" .format (packet .freshman .name , packet .freshman .rit_username ))
232
+ print (' {} ({}):' .format (packet .freshman .name , packet .freshman .rit_username ))
233
233
234
234
received = packet .signatures_received ()
235
235
required = packet .signatures_required ()
236
236
237
- print (" \t Upperclassmen score: {:0.2f}%" .format (received .member_total / required .member_total * 100 ))
238
- print (" \t Total score: {:0.2f}%" .format (received .total / required .total * 100 ))
237
+ print (' \t Upperclassmen score: {:0.2f}%' .format (received .member_total / required .member_total * 100 ))
238
+ print (' \t Total score: {:0.2f}%' .format (received .total / required .total * 100 ))
239
239
print ()
240
240
241
- print (" \t Upperclassmen: {}/{}" .format (received .upper , required .upper ))
242
- print (" \t Freshmen: {}/{}" .format (received .fresh , required .fresh ))
243
- print (" \t Miscellaneous: {}/{}" .format (received .misc , required .misc ))
241
+ print (' \t Upperclassmen: {}/{}' .format (received .upper , required .upper ))
242
+ print (' \t Freshmen: {}/{}' .format (received .fresh , required .fresh ))
243
+ print (' \t Miscellaneous: {}/{}' .format (received .misc , required .misc ))
244
244
print ()
245
245
246
- print (" \t Total missed:" , required .total - received .total )
246
+ print (' \t Total missed:' , required .total - received .total )
247
247
248
248
249
- @app .cli .command (" extend-packet" )
250
- @click .argument (" packet_id" )
249
+ @app .cli .command (' extend-packet' )
250
+ @click .argument (' packet_id' )
251
251
def extend_packet (packet_id ):
252
252
"""
253
253
Extends the given packet by setting a new end date.
254
254
"""
255
255
packet = Packet .by_id (packet_id )
256
256
257
257
if not packet .is_open ():
258
- print (" Packet is already closed so it cannot be extended" )
258
+ print (' Packet is already closed so it cannot be extended' )
259
259
return
260
260
else :
261
- print (" Ready to extend packet #{} for {}" .format (packet_id , packet .freshman_username ))
261
+ print (' Ready to extend packet #{} for {}' .format (packet_id , packet .freshman_username ))
262
262
263
- packet .end = datetime .combine (input_date (" Enter the new end date for this packet" ), packet_end_time )
263
+ packet .end = datetime .combine (input_date (' Enter the new end date for this packet' ), packet_end_time )
264
264
db .session .commit ()
265
265
266
- print (" Packet successfully extended" )
266
+ print (' Packet successfully extended' )
267
267
268
268
269
269
def remove_sig (packet_id , username , is_member ):
270
270
packet = Packet .by_id (packet_id )
271
271
272
272
if not packet .is_open ():
273
- print (" Packet is already closed so its signatures cannot be modified" )
273
+ print (' Packet is already closed so its signatures cannot be modified' )
274
274
return
275
275
elif is_member :
276
276
sig = UpperSignature .query .filter_by (packet_id = packet_id , member = username ).first ()
277
277
if sig is not None :
278
278
sig .signed = False
279
279
db .session .commit ()
280
- print (" Successfully unsigned packet" )
280
+ print (' Successfully unsigned packet' )
281
281
else :
282
282
result = MiscSignature .query .filter_by (packet_id = packet_id , member = username ).delete ()
283
283
if result == 1 :
284
284
db .session .commit ()
285
- print (" Successfully unsigned packet" )
285
+ print (' Successfully unsigned packet' )
286
286
else :
287
- print (" Failed to unsign packet; could not find signature" )
287
+ print (' Failed to unsign packet; could not find signature' )
288
288
else :
289
289
sig = FreshSignature .query .filter_by (packet_id = packet_id , freshman_username = username ).first ()
290
290
if sig is not None :
291
291
sig .signed = False
292
292
db .session .commit ()
293
- print (" Successfully unsigned packet" )
293
+ print (' Successfully unsigned packet' )
294
294
else :
295
- print (" Failed to unsign packet; {} is not an onfloor" .format (username ))
295
+ print (' Failed to unsign packet; {} is not an onfloor' .format (username ))
296
296
297
297
298
- @app .cli .command (" remove-member-sig" )
299
- @click .argument (" packet_id" )
300
- @click .argument (" member" )
298
+ @app .cli .command (' remove-member-sig' )
299
+ @click .argument (' packet_id' )
300
+ @click .argument (' member' )
301
301
def remove_member_sig (packet_id , member ):
302
302
"""
303
303
Removes the given member's signature from the given packet.
@@ -306,9 +306,9 @@ def remove_member_sig(packet_id, member):
306
306
remove_sig (packet_id , member , True )
307
307
308
308
309
- @app .cli .command (" remove-freshman-sig" )
310
- @click .argument (" packet_id" )
311
- @click .argument (" freshman" )
309
+ @app .cli .command (' remove-freshman-sig' )
310
+ @click .argument (' packet_id' )
311
+ @click .argument (' freshman' )
312
312
def remove_freshman_sig (packet_id , freshman ):
313
313
"""
314
314
Removes the given freshman's signature from the given packet.
0 commit comments