annotate scripts/weekly-report @ 3775:beaf7ea86e5e

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

Roundup Issue Tracker: http://roundup-tracker.org/