From ab16d23c3d82c427e0c4e969573db6e087e9f2dc Mon Sep 17 00:00:00 2001 From: gianluca Date: Sat, 4 Jul 2009 00:57:18 +0200 Subject: Initial implementation of the html repository export. Creation of the index file --- becommands/html.py | 107 +++++++++++++ becommands/html_data.py | 395 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 502 insertions(+) create mode 100644 becommands/html.py create mode 100644 becommands/html_data.py (limited to 'becommands') diff --git a/becommands/html.py b/becommands/html.py new file mode 100644 index 0000000..cc64c7d --- /dev/null +++ b/becommands/html.py @@ -0,0 +1,107 @@ +# Copyright (C) 2005-2009 Aaron Bentley and Panometrics, Inc. +# Marien Zwart +# Thomas Gerigk +# W. Trevor King +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +"""Re-open a bug""" +from libbe import cmdutil, bugdir, bug +from html_data import * +import os, re + +__desc__ = __doc__ + +def execute(args, test=False): + """ + >>> import os + >>> bd = bugdir.simple_bug_dir() + >>> os.chdir(bd.root) + >>> print bd.bug_from_shortname("b").status + closed + >>> execute(["b"], test=True) + >>> bd._clear_bugs() + >>> print bd.bug_from_shortname("b").status + open + """ + parser = get_parser() + options, args = parser.parse_args(args) + cmdutil.default_complete(options, args, parser, + bugid_args={0: lambda bug : bug.active==False}) + if len(args) == 0: + out_dir = './html_export' + print "Creating the html output in ./html_export" + else: + out_dir = args[0] + if len(args) > 1: + raise cmdutil.UsageError, "Too many arguments." + + bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test) + bd.load_all_bugs() + status_list = bug.status_values + severity_list = bug.severity_values + st = {} + se = {} + + for s in status_list: + st[s] = 0 + for s in severity_list: + se[s] = 0 + for b in bd: + st[b.status] += 1 + se[b.severity] += 1 + create_index_file(out_dir, st, se) + +def create_index_file(out_dir_path, summary, severity): + try: + os.stat(out_dir_path) + except: + try: + os.mkdir(out_dir_path) + except: + raise cmdutil.UsageError, "Cannot create output directory." + try: + FO = open(out_dir_path+"/style.css", "w") + FO.write(css_file) + FO.close() + except: + raise cmdutil.UsageError, "Cannot create the style.css file." + value = html_index + for stat in summary: + rep = "_"+stat+"_" + val = str(summary[stat]) + value = re.sub(rep, val, value) + for sev in severity: + rep = "_"+sev+"_" + val = str(severity[sev]) + value = re.sub(rep, val, value) + try: + FO = open(out_dir_path+"/index.html", "w") + FO.write(value) + FO.close() + except: + raise cmdutil.UsageError, "Cannot create the index.html file." + + +def get_parser(): + parser = cmdutil.CmdOptionParser("be open OUTPUT_DIR") + return parser + +longhelp=""" +Generate a set of html pages. +""" + +def help(): + return get_parser().help_str() + longhelp diff --git a/becommands/html_data.py b/becommands/html_data.py new file mode 100644 index 0000000..db3d1c0 --- /dev/null +++ b/becommands/html_data.py @@ -0,0 +1,395 @@ + +__desc__ = __doc__ + +css_file = """ +body { +font-family: "lucida grande", "sans serif"; +color: #333; +width: 60em; +margin: auto; +} + + +div.main { +padding: 20px; +margin: auto; +padding-top: 0; +margin-top: 1em; +background-color: #fcfcfc; +} + + +.person { +font-family: courier; +} + +a, a:visited { +background: inherit; +text-decoration: none; +} + +a { +color: #003d41; +} + +a:visited { +color: #553d41; +} + +ul { +list-style-type: none; +padding: 0; +} + +p { +width: 40em; +} + +.inline-status-image { +position: relative; +top: 0.2em; +} + +.dimmed { +color: #bbb; +} + +table { +border-style: none; +border-spacing: 0; +} + +table.log { +} + + +td { +border-width: 0; +border-style: none; +padding-right: 0.5em; +padding-left: 0.5em; +} + +tr { +vertical-align: top; +} + +h1 { +padding: 0.5em; +background-color: #305275; +margin-top: 0; +margin-bottom: 0; +color: #fff; +margin-left: -20px; +margin-right: -20px; +} + +h2 { +text-transform: uppercase; +font-size: smaller; +margin-top: 1em; +margin-left: -0.5em; +/*background: #fffbce;*/ +/*background: #628a0d;*/ +padding: 5px; +color: #305275; +} + + + +.attrname { +text-align: right; +font-size: smaller; +} + +.attrval { +color: #222; +} + +.issue-closed-fixed { +background-image: "green-check.png"; +} + +.issue-closed-wontfix { +background-image: "red-check.png"; +} + +.issue-closed-reorg { +background-image: "blue-check.png"; +} + +.inline-issue-link { +text-decoration: underline; +} + +img { +border: 0; +} + + +div.footer { +font-size: small; +padding-left: 20px; +padding-right: 20px; +padding-top: 5px; +padding-bottom: 5px; +margin: auto; +background: #305275; +color: #fffee7; +} + +.footer a { +color: #508d91; +} + + +.header { +font-family: "lucida grande", "sans serif"; +font-size: smaller; +background-color: #a9a9a9; +text-align: left; + +padding-right: 0.5em; +padding-left: 0.5em; + +} + + +.even-row { +background-color: #e9e9e2; +} + +.odd-row { +background-color: #f9f9f9; +} + +.backptr { +font-size: smaller; +width: 100%; +text-align: left; +padding-bottom: 1em; +margin-top: 0; +} + +.logcomment { +padding-left: 4em; +font-size: smaller; +} + +.id { +font-family: courier; +} + +.description { +background: #f2f2f2; +padding-left: 1em; +padding-right: 1em; +padding-top: 0.5em; +padding-bottom: 0.5em; +} + +.message { +} + +.littledate { +font-size: smaller; +} + +.progress-meter-done { +background-color: #03af00; +} + +.progress-meter-undone { +background-color: #ddd; +} + +.progress-meter { +} +""" + +html_index = """ + + +BugsEverywhere Issue Tracker + + + + + + +
+

BugsEverywhere Issue Tracker

+ + + + + + + +
+

Issues list by status

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ unconfirmed + + _unconfirmed_ + + issues +
+ open + + _open_ + + issues +
+ assigned + + _assigned_ + + issues +
+ test + + _test_ + + issues +
+ closed + + _closed_ + + issues +
+ fixed + + _fixed_ + + issues +
+ wontfix + + _wontfix_ + + issues +
+ disabled + + _disabled_ + + issues +
+
+ +

Open issues by severity

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ serious + + _serious_ + + issues +
+ critical + + _critical_ + + issues +
+ fatal + + _fatal_ + + issues +
+ wishlist + + _wishlist_ + + issues +
+ minor + + _minor_ + + issues +
+
+ +
+ + + + + + +""" + -- cgit