From 08ce27b99d1b4812ad86c1cd34b98100ccf4bdb0 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Fri, 28 Jun 2013 12:18:57 -0400 Subject: [PATCH] Refactor HTML generation. --- openreviews.py | 70 ++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 39 deletions(-) diff --git a/openreviews.py b/openreviews.py index a5f97b1..e6fb2b6 100755 --- a/openreviews.py +++ b/openreviews.py @@ -141,42 +141,36 @@ def print_stats_txt(stats, f=sys.stdout): print_list_txt(stats, 0) -def output_html(projects, waiting_on_reviewer, waiting_on_submitter, - age_sorted_waiting_on_reviewer, age2_sorted_waiting_on_reviewer, - options): - print '' - print 'Open Reviews for %s' % ( - [project['name'] for project in projects]) - print '

Projects: %s

' % [project['name'] for project in projects] - print '

Total Open Reviews: %d

' % (len(waiting_on_reviewer) + - len(waiting_on_submitter)) - print '

Waiting on Submitter: %d

' % len(waiting_on_submitter) - print '

Waiting on Reviewer: %d

' % len(waiting_on_reviewer) - print '' - print '' +def print_stats_html(stats, f=sys.stdout): + def print_list_html(l, level): + if level: + f.write('<%s>\n' % ('ul' if level == 1 else 'ol')) + for item in l: + if level: + f.write('%s
  • ' % (' ' * level)) + print_item_html(item, level) + if level: + f.write('
  • \n') + if level: + f.write('\n' % ('ul' if level == 1 else 'ol')) + + def print_item_html(item, level): + if isinstance(item, basestring): + f.write('%s' % item) + elif isinstance(item, list): + print_list_html(item, level + 1) + elif isinstance(item, tuple): + f.write('%s: ' % item[0]) + if isinstance(item[1], list): + f.write('\n') + print_item_html(item[1], level) + else: + raise Exception('Unhandled type') + + f.write('\n') + f.write('Open Reviews for %s\n' % stats[0][1]) + print_list_html(stats, 0) + f.write('\n') def main(argv=None): @@ -254,9 +248,7 @@ def main(argv=None): age2_sorted_waiting_on_reviewer, options) if options.html: - output_html(projects, waiting_on_reviewer, waiting_on_submitter, - age_sorted_waiting_on_reviewer, - age2_sorted_waiting_on_reviewer, options) + print_stats_html(stats) else: print_stats_txt(stats)