[Buildbot-devel] [patch] make HTML status produce valid HTML

Brad Hards bradh at frogmouth.net
Sun Oct 16 06:15:10 UTC 2005


I converted my custom mail parser to the email package, but the changes
displayed on the waterfall display still didn't handle UTF8 names correctly.
Turns out that my browser was guessing iso-8859-1, not UTF-8.

A bit more investigation showed that the output didn't validate (using
the W3C validator). The patch below fixes those problems. 

The rationale for the changes:
1. orange isn't a valid color for CSS
2. charset needs to be specified
3. We need a valid doctype
4. <link> has to occur inside the <head>

With those changes, the XHTML and CSS validate.

Brad

Index: classic.css
===================================================================
RCS file: /cvsroot/buildbot/buildbot/buildbot/status/classic.css,v
retrieving revision 1.1
diff -u -4 -p -r1.1 classic.css
--- classic.css 26 Apr 2005 02:43:12 -0000      1.1
+++ classic.css 16 Oct 2005 06:08:16 -0000
@@ -19,9 +19,9 @@ td.Event, td.BuildStep, td.Activity, td.
 .failure {
        background-color: red;
 }
 .warnings {
-       background-color: orange;
+       background-color: #FF8000;
 }
 .exception {
        background-color: #c000c0;
 }
Index: html.py
===================================================================
RCS file: /cvsroot/buildbot/buildbot/buildbot/status/html.py,v
retrieving revision 1.69
diff -u -4 -p -r1.69 html.py
--- html.py     14 Oct 2005 19:42:40 -0000      1.69
+++ html.py     16 Oct 2005 06:08:17 -0000
@@ -139,9 +139,9 @@ class Box:


 class HtmlResource(Resource):
     css = None
-    contentType = "text/html"
+    contentType = "text/html; charset=UTF-8"
     def render(self, request):
         data = self.content(request)
         request.setHeader("content-type", self.contentType)
         if request.method == "HEAD":
@@ -149,15 +149,20 @@ class HtmlResource(Resource):
             return ''
         return data
     title = "Dummy"
     def content(self, request):
-        data = "<html>\n<head><title>" + self.title + "</title></head>\n"
+        data = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n'
+        data += '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n'
+        data += '<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">\n'
+        data += "<head>\n"
+        data += "  <title>" + self.title + "</title>\n"
         if self.css:
             # TODO: use some sort of relative link up to the root page, so
             # this css can be used from child pages too
-            data += ("<link href=\"%s\""
+            data += ("    <link href=\"%s\""
                      " rel=\"stylesheet\""
-                     " type=\"text/css\">\n" % "buildbot.css")
+                     " type=\"text/css\"/>\n" % "buildbot.css")
+        data += "</head>\n"
         data += "<body vlink=\"#800080\">\n"
         data += self.body(request)
         data += "</body></html>\n"
         return data
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://buildbot.net/pipermail/devel/attachments/20051016/a5b5460a/attachment.bin>


More information about the devel mailing list