view scripts/weekly-report @ 5132:0142b4fb5a2d

issue2550648 - partial fix for problem in this issue. Ezio Melotti reported that the expression editor allowed the user to generate an expression using retired values. To align the expression editor with the simple dropdown search item, retired values are now removed from the expression editor. Do we really want this though? Supposed a keyword is retired and I want to search for an issue with that retired keyword? Do we have a best policy document that says to remove retired keywords from all places it could possibly be used? It could be argued that the simple search dropdown is wrong and should allow selecting retired values.
author John Rouillard <rouilj@ieee.org>
date Fri, 08 Jul 2016 19:31:02 -0400
parents 5db2dfff85d8
children c75defc1c2f0
line wrap: on
line source

#! /usr/bin/env python

# This script generates a simple report outlining the activity in one
# tracker for the most recent week.

# This script is free software, you may redistribute it
# and/or modify under the same terms as Python.

import sys, math
from roundup import instance, date

# open the instance
if len(sys.argv) != 2:
    print 'You need to specify an instance home dir'
instance_home = sys.argv[1]
instance = instance.open(instance_home)
db = instance.open('admin')

old = date.Date('-1w')

created = []
summary = {}
messages = []

# loop through all the recently-active issues
for issue_id in db.issue.filter(None, {'activity': '-1w;'}):
    num = 0
    for x,ts,userid,action,data in db.issue.history(issue_id):
        if ts < old: continue
        if action == 'create':
            created.append(issue_id)
        elif action == 'set' and data.has_key('messages'):
            num += 1
    summary.setdefault(db.issue.get(issue_id, 'status'), []).append(issue_id)
    messages.append((num, issue_id))

#print 'STATUS SUMMARY:'
#for k,v in summary.items():
#    print k, len(v)

print '\nCREATED:'
print '\n'.join(['%s: %s'%(id, db.issue.get(id, 'title'))
    for id in created])

print '\nRESOLVED:'
resolved_id = db.status.lookup('resolved')
print '\n'.join(['%s: %s'%(id, db.issue.get(id, 'title'))
    for id in summary.get(resolved_id, [])])

print '\nTOP TEN MOST DISCUSSED:'
messages.sort()
messages.reverse()
nmax = messages[0][0]
fmt = '%%%dd - %%s: %%s'%(int(math.log(nmax, 10)) + 1)
print '\n'.join([fmt%(num, id, db.issue.get(id, 'title'))
    for num, id in messages[:10]])

# vim: set filetype=python ts=4 sw=4 et si

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