@@ -78,15 +78,18 @@ def sync_freshman():
7878 return dumps (results ), 200
7979
8080
81- @app .route ('/api/v1/packet ' , methods = ['POST' ])
81+ @app .route ('/api/v1/packets ' , methods = ['POST' ])
8282@packet_auth
8383def create_packet ():
8484 """
8585 Create a new packet.
8686
87- Body parameters:
88- - start_date: the start date of the packet in MM/DD/YYYY format
89- - freshman: the RIT username of the freshman for whom to create a packet
87+ Body parameters: {
88+ start_date: the start date of the packets in MM/DD/YYYY format
89+ freshmen: [
90+ rit_username: string
91+ ]
92+ }
9093 """
9194
9295 # Only allow evals to create new packets
@@ -95,11 +98,13 @@ def create_packet():
9598 return 'Forbidden: not Evaluations Director' , 403
9699
97100 base_date = datetime .strptime (request .json ['start_date' ], '%m/%d/%Y' ).date ()
98- frosh_rit_username = request .json ['freshman' ]
99101
100102 start = datetime .combine (base_date , packet_start_time )
101103 end = datetime .combine (base_date , packet_end_time ) + timedelta (days = 14 )
102104
105+ frosh = request .json ['freshmen' ]
106+ results = list ()
107+
103108 # Gather upperclassmen data from LDAP
104109 all_upper = list (filter (
105110 lambda member : not ldap_is_intromember (member ) and not ldap_is_on_coop (member ), ldap_get_active_members ()))
@@ -113,30 +118,37 @@ def create_packet():
113118 # Packet starting notifications
114119 packets_starting_notification (start )
115120
116- # Create the packet and signatures
117- freshman = Freshman .query .filter_by (rit_username = frosh_rit_username ).first ()
118- packet = Packet (freshman = freshman , start = start , end = end )
119- db .session .add (packet )
120- send_start_packet_mail (packet )
121- packet_starting_notification (packet )
122-
123- for member in all_upper :
124- sig = UpperSignature (packet = packet , member = member .uid )
125- sig .eboard = ldap_get_eboard_role (member )
126- sig .active_rtp = member .uid in rtp
127- sig .three_da = member .uid in three_da
128- sig .webmaster = member .uid in webmaster
129- sig .c_m = member .uid in c_m
130- sig .drink_admin = member .uid in drink
131- db .session .add (sig )
132-
133- for onfloor_freshman in Freshman .query .filter_by (onfloor = True ).filter (Freshman .rit_username !=
134- freshman .rit_username ).all ():
135- db .session .add (FreshSignature (packet = packet , freshman = onfloor_freshman ))
121+ for frosh_rit_username in frosh :
122+ # Create the packet and signatures
123+ freshman = Freshman .query .filter_by (rit_username = frosh_rit_username ).first ()
124+ if freshman is None :
125+ results .append (f"Freshman '{ frosh_rit_username } ' not found" )
126+ continue
127+
128+ packet = Packet (freshman = freshman , start = start , end = end )
129+ db .session .add (packet )
130+ send_start_packet_mail (packet )
131+ packet_starting_notification (packet )
132+
133+ for member in all_upper :
134+ sig = UpperSignature (packet = packet , member = member .uid )
135+ sig .eboard = ldap_get_eboard_role (member )
136+ sig .active_rtp = member .uid in rtp
137+ sig .three_da = member .uid in three_da
138+ sig .webmaster = member .uid in webmaster
139+ sig .c_m = member .uid in c_m
140+ sig .drink_admin = member .uid in drink
141+ db .session .add (sig )
142+
143+ for onfloor_freshman in Freshman .query .filter_by (onfloor = True ).filter (Freshman .rit_username !=
144+ freshman .rit_username ).all ():
145+ db .session .add (FreshSignature (packet = packet , freshman = onfloor_freshman ))
146+
147+ results .append (f'Packet created for { frosh_rit_username } ' )
136148
137149 db .session .commit ()
138150
139- return f'Packet created for { frosh_rit_username } ' , 201
151+ return dumps ( results ) , 201
140152
141153
142154@app .route ('/api/v1/packets/<username>' , methods = ['GET' ])
0 commit comments