annotate scripts/weekly-report @ 3896:fca0365521fc

ignore client shutdown exceptions when sending responses patch from Ulrik Miaelsson If the user clicks the stop button, or click another link before the previous has finished loading, or something similar an IOError exception will be raised which results in the admin being sent an email. This can understandably be pretty annoying if your users are doing that on a regular basis. So we'll trap that exception and ignore it.
author Justus Pendleton <jpend@users.sourceforge.net>
date Tue, 11 Sep 2007 21:30:14 +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/