Template system v1 completed
authorGianluca Montecchi <gian@grys.it>
Wed, 7 Oct 2009 22:41:31 +0000 (00:41 +0200)
committerGianluca Montecchi <gian@grys.it>
Wed, 7 Oct 2009 22:41:31 +0000 (00:41 +0200)
becommands/html.py

index f943258372cc960002d231a768e7215a396dc953..084aa640ef8905d063d2d98531bcd961f00c9552 100644 (file)
@@ -94,7 +94,7 @@ def get_parser():
     parser = cmdutil.CmdOptionParser("be html [options]")
     parser.add_option("-o", "--output", metavar="export_dir", dest="outdir",
         help="Set the output path, default is ./html_export", default="html_export")  
-    parser.add_option("-t", "--template", metavar="template", dest="template",
+    parser.add_option("-t", "--template-dir", metavar="template", dest="template",
         help="Use a different template, default is empty", default=None)
     parser.add_option("-v", "--verbose",  action="store_true", metavar="verbose", dest="verbose",
         help="Verbose output, default is no", default=False)
@@ -134,35 +134,283 @@ class BEHTMLGen():
             self.template = "default"
         else:
             self.template = template
-        FI = open("./templates/%s/style.css"%self.template)
-        self.css_file = FI.read()
-        FI.close()
+
+        self.css_file = """
+            body {
+            font-family: "lucida grande", "sans serif";
+            color: #333;
+            width: auto;
+            margin: auto;
+            }
+            
+            
+            div.main {
+            padding: 20px;
+            margin: auto;
+            padding-top: 0;
+            margin-top: 1em;
+            background-color: #fcfcfc;
+            }
+            
+            .comment {
+            padding: 20px;
+            margin: auto;
+            padding-top: 20px;
+            margin-top: 0;
+            }
+            
+            .commentF {
+            padding: 0px;
+            margin: auto;
+            padding-top: 0px;
+            paddin-bottom: 20px;
+            margin-top: 0;
+            }
+            
+            tb {
+            border = 1;
+            }
+            
+            .wishlist-row {
+            background-color: #B4FF9B;
+            width: auto;
+            }
+            
+            .minor-row {
+            background-color: #FCFF98;
+            width: auto;
+            }
+            
+            
+            .serious-row {
+            background-color: #FFB648;
+            width: auto;
+            }
+            
+            .critical-row {
+            background-color: #FF752A;
+            width: auto;
+            }
+            
+            .fatal-row {
+            background-color: #FF3300;
+            width: auto;
+            }
+            
+            .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: auto;
+            }
+            
+            .inline-status-image {
+            position: relative;
+            top: 0.2em;
+            }
+            
+            .dimmed {
+            color: #bbb;
+            }
+            
+            table {
+            border-style: 10px solid #313131;
+            border-spacing: 0;
+            width: auto;
+            }
+            
+            table.log {
+            }
+            
+            td {
+            border-width: 0;
+            border-style: none;
+            padding-right: 0.5em;
+            padding-left: 0.5em;
+            width: auto;
+            }
+            
+            .td_sel {
+            background-color: #afafaf;
+            border: 1px solid #afafaf;
+            font-weight:bold;
+            padding-right: 1em;
+            padding-left: 1em;
+            
+            }
+            
+            .td_nsel {
+            border: 0px;
+            padding-right: 1em;
+            padding-left: 1em;
+            }
+            
+            tr {
+            vertical-align: top;
+            width: auto;
+            }
+            
+            h1 {
+            padding: 0.5em;
+            background-color: #305275;
+            margin-top: 0;
+            margin-bottom: 0;
+            color: #fff;
+            margin-left: -20px;
+            margin-right: -20px;  
+            }
+            
+            wid {
+            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;
+            
+            }
+            
+            
+            .selected-cell {
+            background-color: #e9e9e2;
+            }
+            
+            .plain-cell {
+            background-color: #f9f9f9;
+            }
+            
+            
+            .logcomment {
+            padding-left: 4em;
+            font-size: smaller;
+            }
+            
+            .id {
+            font-family: courier;
+            }
+            
+            .table_bug {
+            background-color: #afafaf;
+            border: 2px solid #afafaf;
+            }
+            
+            .message {
+            }
+            
+            .progress-meter-done {
+            background-color: #03af00;
+            }
+            
+            .progress-meter-undone {
+            background-color: #ddd;
+            }
+            
+            .progress-meter {
+            }        
+        """
         
         self.index_first = """
-        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-        <head>
-        <title>BugsEverywhere Issue Tracker</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=%s" />
-        <link rel="stylesheet" href="style.css" type="text/css" />
-        </head>
-        <body>
-        
-        
-        <div class="main">
-        <h1>BugsEverywhere Bug List</h1>
-        <p></p>
-        <table>
-        
-        <tr>
-        <td class="%%s"><a href="index.html">Active Bugs</a></td>
-        <td class="%%s"><a href="index_inactive.html">Inactive Bugs</a></td>
-        </tr>
-        
-        </table>
-        <table class="table_bug">
-        <tbody>
+            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+            <head>
+            <title>BugsEverywhere Issue Tracker</title>
+            <meta http-equiv="Content-Type" content="text/html; charset=%s" />
+            <link rel="stylesheet" href="style.css" type="text/css" />
+            </head>
+            <body>
+            
+            
+            <div class="main">
+            <h1>BugsEverywhere Bug List</h1>
+            <p></p>
+            <table>
+            
+            <tr>
+            <td class="%%s"><a href="index.html">Active Bugs</a></td>
+            <td class="%%s"><a href="index_inactive.html">Inactive Bugs</a></td>
+            </tr>
+            
+            </table>
+            <table class="table_bug">
+            <tbody>
         """ % self.bd.encoding
         
         self.bug_line ="""
@@ -195,8 +443,6 @@ class BEHTMLGen():
         <tbody>
         """ % self.bd.encoding
         
-        
-        
         self.detail_line ="""
         <tr>
         <td align="right">%s</td><td>%s</td>
@@ -241,6 +487,45 @@ class BEHTMLGen():
         </html>
         """ 
         
+        if template != None:
+            try:
+                FI = open("%s/style.css"%self.template)
+                self.css_file = FI.read()
+                FI.close()
+            except:
+                pass
+            try:
+                FI = open("%s/index_first.tpl"%self.template)
+                self.index_first = FI.read()
+                FI.close()
+            except:
+                pass
+            try:
+                FI.open("%s/bug_line.tpl"%self.template)
+                self.bug_line = FI.read()
+                FI.close()
+            except:
+                pass
+            try:
+                FI.open("%s/detail_first.tpl"%self.template)
+                self.detail_first = FI.read()
+                FI.close()
+            except:
+                pass
+            try:
+                FI = open("%s/index_last.tpl"%self.template)
+                self.index_last = FI.read()
+                FI.close()
+            except:
+                pass
+             try:
+                FI = open("%s/detail_last.tpl"%self.template)
+                self.d_last = FI.read()
+                FI.close()
+            except:
+                pass
+           
+            
         
     def create_index_file(self, out_dir_path,  summary,  bugs, ordered_bug, fileid, encoding):
         try: