Skip to content

Commit 6a946e2

Browse files
committed
Create stats route for a specific packet ID
1 parent 731fb6f commit 6a946e2

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

packet/routes/api.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
255288
def commit_sig(packet, was_100, uid):
256289
packet_signed_notification(packet, uid)
257290
db.session.commit()

0 commit comments

Comments
 (0)