1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#! /usr/bin/env python
# This script generates a simple report outlining the activity in one
# tracker for the most recent week.
# This script is free software, you may redistribute it
# and/or modify under the same terms as Python.
import sys, math
from roundup import instance, date
# open the instance
if len(sys.argv) != 2:
print 'You need to specify an instance home dir'
instance_home = sys.argv[1]
instance = instance.open(instance_home)
db = instance.open('admin')
old = date.Date('-1w')
created = []
summary = {}
messages = []
# loop through all the recently-active issues
for issue_id in db.issue.filter(None, {'activity': '-1w;'}):
num = 0
for x,ts,userid,action,data in db.issue.history(issue_id):
if ts < old: continue
if action == 'create':
created.append(issue_id)
elif action == 'set' and data.has_key('messages'):
num += 1
summary.setdefault(db.issue.get(issue_id, 'status'), []).append(issue_id)
messages.append((num, issue_id))
#print 'STATUS SUMMARY:'
#for k,v in summary.items():
# print k, len(v)
print '\nCREATED:'
print '\n'.join(['%s: %s'%(id, db.issue.get(id, 'title'))
for id in created])
print '\nRESOLVED:'
resolved_id = db.status.lookup('resolved')
print '\n'.join(['%s: %s'%(id, db.issue.get(id, 'title'))
for id in summary.get(resolved_id, [])])
print '\nTOP TEN MOST DISCUSSED:'
messages.sort()
messages.reverse()
nmax = messages[0][0]
fmt = '%%%dd - %%s: %%s'%(int(math.log(nmax, 10)) + 1)
print '\n'.join([fmt%(num, id, db.issue.get(id, 'title'))
for num, id in messages[:10]])
# vim: set filetype=python ts=4 sw=4 et si
|