Skip to content

Commit 4d8e6fd

Browse files
committed
Wrote the fetch-results command for the admin cli
1 parent 26d09cd commit 4d8e6fd

File tree

1 file changed

+47
-2
lines changed

1 file changed

+47
-2
lines changed

packet/commands.py

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
2225
class 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=21)) + 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("\tUpperclassmen score: {}%".format(round(upper_ratio * 100, 2)))
192+
193+
total_ratio = sum(received.values()) / sum(required.values())
194+
print("\tTotal score: {}%".format(round(total_ratio * 100, 2)))
195+
196+
print()
197+
198+
print("\tEboard: {}/{}".format(received["eboard"], required["eboard"]))
199+
print("\tUpperclassmen: {}/{}".format(received["upperclassmen"], required["upperclassmen"]))
200+
print("\tFreshmen: {}/{}".format(received["freshmen"], required["freshmen"]))
201+
print("\tMisc: {}/{}".format(len(packet.misc_signatures), required["misc"]))
202+
203+
print()
204+
205+
print("\tTotal missed:", sum(required.values()) - sum(received.values()))

0 commit comments

Comments
 (0)