@@ -19,6 +19,9 @@ def create_secret():
1919 print ("Here's your random secure token:" )
2020 print (token_hex ())
2121
22+ packet_start_time = time (hour = 19 )
23+ packet_end_time = time (hour = 21 )
24+
2225class CSVFreshman :
2326 def __init__ (self , row ):
2427 self .name = row [0 ]
@@ -98,8 +101,8 @@ def create_packets(freshmen_csv):
98101 except ValueError :
99102 pass
100103
101- start = datetime .combine (base_date , time ( hour = 19 ) )
102- end = datetime .combine (base_date , time ( hour = 23 , minute = 59 ) ) + timedelta (days = 14 )
104+ start = datetime .combine (base_date , packet_start_time )
105+ end = datetime .combine (base_date , packet_end_time ) + timedelta (days = 14 )
103106
104107 print ("Fetching data from LDAP..." )
105108 eboard = set (member .uid for member in ldap_get_eboard ())
@@ -158,3 +161,45 @@ def ldap_sync():
158161
159162 db .session .commit ()
160163 print ("Done!" )
164+
165+ @app .cli .command ("fetch-results" )
166+ def fetch_results ():
167+ """
168+ Fetches and prints the results from a given packet season.
169+ """
170+ end_date = None
171+ while end_date is None :
172+ try :
173+ date_str = input ("Enter the last day of the packet season you'd like to retrieve results from " +
174+ "(format: MM/DD/YYYY): " )
175+ end_date = datetime .strptime (date_str , "%m/%d/%Y" ).date ()
176+ except ValueError :
177+ pass
178+
179+ end_date = datetime .combine (end_date , packet_end_time )
180+
181+ for packet in Packet .query .filter_by (end = end_date ).all ():
182+ print ()
183+
184+ print ("{} ({}):" .format (packet .freshman .name , packet .freshman .rit_username ))
185+
186+ received = packet .signatures_received ()
187+ required = packet .signatures_required ()
188+
189+ upper_ratio = sum ((received ["eboard" ], received ["upperclassmen" ], received ["miscellaneous" ])) / \
190+ sum ((required ["eboard" ], required ["upperclassmen" ], required ["misc" ]))
191+ print ("\t Upperclassmen score: {}%" .format (round (upper_ratio * 100 , 2 )))
192+
193+ total_ratio = sum (received .values ()) / sum (required .values ())
194+ print ("\t Total score: {}%" .format (round (total_ratio * 100 , 2 )))
195+
196+ print ()
197+
198+ print ("\t Eboard: {}/{}" .format (received ["eboard" ], required ["eboard" ]))
199+ print ("\t Upperclassmen: {}/{}" .format (received ["upperclassmen" ], required ["upperclassmen" ]))
200+ print ("\t Freshmen: {}/{}" .format (received ["freshmen" ], required ["freshmen" ]))
201+ print ("\t Misc: {}/{}" .format (len (packet .misc_signatures ), required ["misc" ]))
202+
203+ print ()
204+
205+ print ("\t Total missed:" , sum (required .values ()) - sum (received .values ()))
0 commit comments