Code

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