@@ -252,6 +252,39 @@ def report(info):
252252 return 'Success: ' + get_rit_name (info ['uid' ]) + ' sent a report'
253253
254254
255+ @app .route ("/api/v1/stats/packet/<packet_id>" )
256+ @packet_auth
257+ def packet_stats (packet_id ):
258+ packet = Packet .by_id (packet_id )
259+
260+ dates = [packet .start .date () + timedelta (days = x ) for x in range (0 , (packet .end - packet .start ).days )]
261+
262+ upper_stats = dict ()
263+ for date in map (lambda sig : sig .updated , filter (lambda sig : sig .signed , packet .upper_signatures )):
264+ upper_stats [date .date ()] = upper_stats .get (date .date (), 0 ) + 1
265+
266+ fresh_stats = dict ()
267+ for date in map (lambda sig : sig .updated , filter (lambda sig : sig .signed , packet .fresh_signatures )):
268+ fresh_stats [date .date ()] = fresh_stats .get (date .date (), 0 ) + 1
269+
270+ misc_stats = dict ()
271+ for date in map (lambda sig : sig .updated , packet .misc_signatures ):
272+ misc_stats [date .date ()] = misc_stats .get (date .date (), 0 ) + 1
273+
274+ total_stats = dict ()
275+ for date in dates :
276+ total_stats [date .isoformat ()] = {
277+ 'upper' : upper_stats .get (date , 0 ),
278+ 'fresh' : fresh_stats .get (date , 0 ),
279+ 'misc' : misc_stats .get (date , 0 ),
280+ }
281+
282+ return {
283+ 'packet_id' : packet_id ,
284+ 'dates' : total_stats ,
285+ }
286+
287+
255288def commit_sig (packet , was_100 , uid ):
256289 packet_signed_notification (packet , uid )
257290 db .session .commit ()
0 commit comments