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