From c990185ecf4cf0c7f782fdbba7740cb47cf67d0c Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Wed, 5 Aug 2009 12:41:39 +0100 Subject: [PATCH] workitems: add initial HTML report --- workitems.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/workitems.py b/workitems.py index b2295a2..6dc4d6b 100755 --- a/workitems.py +++ b/workitems.py @@ -5,7 +5,7 @@ import sqlite3 as dbapi2 blueprints_base_url = 'https://blueprints.launchpad.net' -valid_states = set(['todo', 'done', 'postponed']) +valid_states = ['todo', 'done', 'postponed'] def get_db(dbpath): '''Open/initialize database. @@ -48,6 +48,8 @@ def parse_argv(): help='Print work item summary in text format', dest='text') optparser.add_option('-c', '--csv', action='store_true', default=False, help='Print work item summary in CSV format', dest='csv') + optparser.add_option('-H', '--html', action='store_true', default=False, + help='Generate work item HTML report', dest='html') optparser.add_option('--from', metavar='YYYY-MM-DD', help='Generate CSV data from this day on', dest='from_date') optparser.add_option('--to', metavar='YYYY-MM-DD', @@ -57,7 +59,7 @@ def parse_argv(): if not opts.database: optparser.error('No database given') - if not opts.dump and not opts.text and not opts.csv: + if not opts.dump and not opts.text and not opts.csv and not opts.html: if not opts.release: optparser.error('No release given') if not opts.pattern: @@ -261,6 +263,54 @@ def csv(db, from_date, to_date): entry.get('postponed', 0)) d += datetime.timedelta(days=1) +def html(db): + '''Print work item status as HTML.''' + + print ''' + + Work item status + + + + + +

History

+

burndown

+ +

Status by blueprint

+ + +''' + + data = blueprint_status(db) + + completion = [] + for (bp, (todo, done, postponed)) in data.iteritems(): + completion.append((bp, + int(float(postponed+done)/(todo+done+postponed)*100 + 0.5))) + + completion.sort(key=lambda k: k[1], reverse=True) + + for (bp, percent) in completion: + print ' ' % ( + blueprints_base_url, bp, bp, data[bp][0], data[bp][2], + data[bp][1], percent) + + print '
Blueprint todo/postponed/done Completion
%s %i/%i/%i %i%%
' + + print '' + def import_moin(db, urls): '''Collect blueprint work items from a moin wiki.''' @@ -280,6 +330,8 @@ if opts.dump: dump(db) elif opts.text: text(db) +elif opts.html: + html(db) elif opts.csv: csv(db, opts.from_date, opts.to_date) else: -- 2.39.2