Mercurial > p > roundup > code
annotate scripts/weekly-report @ 8562:9c3ec0a5c7fc
chore: remove __future print_funcion from code.
Not needed as of Python 3.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Wed, 08 Apr 2026 21:39:40 -0400 |
| parents | 20ab9a4b76e9 |
| children |
| rev | line source |
|---|---|
| 4041 | 1 #! /usr/bin/env python |
| 3764 | 2 |
| 3 # This script generates a simple report outlining the activity in one | |
| 4 # tracker for the most recent week. | |
| 5 | |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
6 # A second argument is the negative interval to change period |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
7 # of time. |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
8 |
| 3764 | 9 # This script is free software, you may redistribute it |
| 10 # and/or modify under the same terms as Python. | |
| 11 | |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
12 #Example output |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
13 #CREATED: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
14 #2702: new item |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
15 # |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
16 #RESOLVED: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
17 #1995: Where is my Power plugs |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
18 #2501: Can you help me with Sanity |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
19 #459: I need Sanity |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
20 # |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
21 #TOP TEN MOST DISCUSSED: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
22 #2 - 491: Can you help me with Sanity |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
23 #1 - 1995: Where is my Power plugs |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
24 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
25 import sys |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
26 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
27 from roundup import date, instance |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
28 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
29 # position for arguments |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
30 tracker_home_pos = 1 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
31 optional_interval_pos = 2 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
32 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
33 # gather args |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
34 arg_len = len(sys.argv) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
35 # map pos to length by adding 1. |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
36 if arg_len not in [tracker_home_pos + 1, optional_interval_pos + 1]: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
37 print('Usage: %s tracker-home [interval -1w]' % sys.argv[0]) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
38 if (arg_len < tracker_home_pos + 1 ): |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
39 print(' You need to specify a tracker home directory') |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
40 sys.exit(1) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
41 instance_home = sys.argv[tracker_home_pos] |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
42 lookback_interval = sys.argv[optional_interval_pos] if \ |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
43 len(sys.argv) == optional_interval_pos + 1 else '-1w' |
| 3764 | 44 |
| 45 # open the instance | |
| 46 instance = instance.open(instance_home) | |
| 47 db = instance.open('admin') | |
| 48 | |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
49 old = date.Date(lookback_interval) |
| 3764 | 50 |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
51 created = [] # [issue_id_created_issue] |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
52 summary = {} # {status_id: [issue_ids in that status]} |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
53 messages = [] # [(number_of_messages, issue_id)] |
| 3764 | 54 |
| 55 # loop through all the recently-active issues | |
| 56 for issue_id in db.issue.filter(None, {'activity': '-1w;'}): | |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
57 message_count = 0 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
58 for _x,ts,_userid,action,data in db.issue.history(issue_id): |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
59 if ts < old: # history occurred before our current window |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
60 continue |
| 3764 | 61 if action == 'create': |
| 62 created.append(issue_id) | |
|
5412
c75defc1c2f0
Python 3 preparation: miscellaneous Python scripts not named *.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4041
diff
changeset
|
63 elif action == 'set' and 'messages' in data: |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
64 message_count += 1 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
65 summary.setdefault(db.issue.get(issue_id, 'status'), |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
66 []).append(issue_id) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
67 messages.append((message_count, issue_id)) |
| 3764 | 68 |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
69 #print('STATUS SUMMARY:') |
| 3764 | 70 #for k,v in summary.items(): |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
71 # print(k, len(v)) |
| 3764 | 72 |
|
5412
c75defc1c2f0
Python 3 preparation: miscellaneous Python scripts not named *.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4041
diff
changeset
|
73 print('\nCREATED:') |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
74 if created: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
75 print('\n'.join(['%s: %s'%(itemid, db.issue.get(itemid, 'title')) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
76 for itemid in created])) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
77 else: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
78 print("No issue created in interval %s" % lookback_interval) |
| 3764 | 79 |
|
5412
c75defc1c2f0
Python 3 preparation: miscellaneous Python scripts not named *.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4041
diff
changeset
|
80 print('\nRESOLVED:') |
| 3764 | 81 resolved_id = db.status.lookup('resolved') |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
82 if summary: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
83 # deduplicate - duplicates happen when issue with resolved status |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
84 # has multiple history items (e.g. message or other |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
85 # change after resolution) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
86 resolved_ids = sorted(set(summary.get(resolved_id, [])), key=int) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
87 print('\n'.join(['%s: %s' % (itemid, db.issue.get(itemid, 'title')) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
88 for itemid in resolved_ids ])) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
89 else: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
90 print("No issue resolved in interval %s" % lookback_interval) |
| 3764 | 91 |
|
5412
c75defc1c2f0
Python 3 preparation: miscellaneous Python scripts not named *.py.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4041
diff
changeset
|
92 print('\nTOP TEN MOST DISCUSSED:') |
|
7785
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
93 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
94 # filter out issues with no messages |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
95 messages = [ message for message in messages if message[0] > 0 ] |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
96 if messages: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
97 messages.sort() |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
98 messages.reverse() |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
99 nmax = messages[0][0] or 1 |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
100 fmt = '%%%dd - %%s: %%s'%(len(str(nmax))) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
101 print('\n'.join([fmt%(num, itemid, db.issue.get(itemid, 'title')) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
102 for num, itemid in messages[:10]])) |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
103 else: |
|
20ab9a4b76e9
fix: multiple fixes, lint cleanup
John Rouillard <rouilj@ieee.org>
parents:
5412
diff
changeset
|
104 print("No issues discussed in interval %s" % lookback_interval) |
| 3764 | 105 |
| 106 # vim: set filetype=python ts=4 sw=4 et si |
