pld-builder.new: PLD_Builder/bqueue.py, PLD_Builder/request.py, PLD_Builder...

glen glen at pld-linux.org
Thu Sep 9 22:54:34 CEST 2010


Author: glen                         Date: Thu Sep  9 20:54:34 2010 GMT
Module: pld-builder.new               Tag: HEAD
---- Log message:
- display date stamps in local time by using javascript on client side

---- Files affected:
pld-builder.new/PLD_Builder:
   bqueue.py (1.16 -> 1.17) , request.py (1.84 -> 1.85) , request_handler_server.py (1.21 -> 1.22) 

---- Diffs:

================================================================
Index: pld-builder.new/PLD_Builder/bqueue.py
diff -u pld-builder.new/PLD_Builder/bqueue.py:1.16 pld-builder.new/PLD_Builder/bqueue.py:1.17
--- pld-builder.new/PLD_Builder/bqueue.py:1.16	Sat May  8 20:23:00 2010
+++ pld-builder.new/PLD_Builder/bqueue.py	Thu Sep  9 22:54:29 2010
@@ -25,7 +25,7 @@
         for r in self.requests:
             r.dump(f)
         self.requests.reverse()
-    
+
     def dump_html(self, f):
         f.write("""
 <html>
@@ -33,6 +33,7 @@
     <link rel="Shortcut Icon" href="http://www.pld-linux.org/favicon.ico"/>
         <title>PLD builder queue</title>
         <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="style.css">
+        <script type="text/javascript" src="script.js"></script>
     </head>
 <body>\n"""
         )
@@ -41,7 +42,7 @@
             r.dump_html(f)
         self.requests.reverse()
         f.write("</body></html>\n")
-    
+
     # read possibly compressed, signed queue
     def read_signed(self):
         if re.search(r"\.gz$", self.name):

================================================================
Index: pld-builder.new/PLD_Builder/request.py
diff -u pld-builder.new/PLD_Builder/request.py:1.84 pld-builder.new/PLD_Builder/request.py:1.85
--- pld-builder.new/PLD_Builder/request.py:1.84	Tue Aug 31 21:40:05 2010
+++ pld-builder.new/PLD_Builder/request.py	Thu Sep  9 22:54:29 2010
@@ -35,6 +35,16 @@
 def escape(s):
     return xml.sax.saxutils.escape(s)
 
+# return timestamp with timezone information
+# so we could parse it in javascript
+def tzdate(t):
+    # as strftime %z is unofficial, and does not work, need to make it numeric ourselves
+#    date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(t))
+    date = time.strftime("%a, %b %d %Y %H:%M:%S", time.localtime(t))
+    # NOTE: the altzone is showing CURRENT timezone, not what the "t" reflects
+    tz = '{:=+05d}'.format(-time.altzone / 3600 * 100)
+    return date + ' ' + tz
+
 def is_blank(e):
     return e.nodeType == Element.TEXT_NODE and string.strip(e.nodeValue) == ""
 
@@ -96,12 +106,12 @@
     def dump_html(self, f):
         f.write(
             "<div id=\"%(no)d\" class=\"%(flags)s\">\n"
-            "<a href=\"#%(no)d\")>%(no)d</a>. %(time)s from <b>%(requester)s</b> "
+            "<a href=\"#%(no)d\")>%(no)d</a>. <span id=\"tz\">%(time)s</span> from <b>%(requester)s</b> "
             "<small>%(id)s, prio=%(priority)d, jobs=%(max_jobs)d, %(flags)s</small>\n"
         % {
             'no': self.no,
             'id': '<a href="srpms/%(id)s">%(id)s</a>' % {'id': self.id},
-            'time': escape(time.strftime("%Y.%m.%d %H:%M:%S", time.localtime(self.time))),
+            'time': escape(tzdate(self.time)),
             'requester': escape(self.requester),
             'priority': self.priority,
             'max_jobs': self.max_jobs,

================================================================
Index: pld-builder.new/PLD_Builder/request_handler_server.py
diff -u pld-builder.new/PLD_Builder/request_handler_server.py:1.21 pld-builder.new/PLD_Builder/request_handler_server.py:1.22
--- pld-builder.new/PLD_Builder/request_handler_server.py:1.21	Wed Aug 25 19:32:49 2010
+++ pld-builder.new/PLD_Builder/request_handler_server.py	Thu Sep  9 22:54:29 2010
@@ -133,8 +133,39 @@
 	f.close()
 	os.umask(old_umask)
 
+def write_js():
+	js_file = path.www_dir + "/script.js"
+	# skip if file exists and code is not newer
+	if os.path.exists(js_file) and os.stat(__file__).st_mtime < os.stat(js_file).st_mtime:
+		return
+
+	js = """
+// update date stamps to reflect viewers timezone
+function update_tz(t) {
+	var el, off, dt,
+		collection = document.getElementsByTagName('span');
+	for (off in collection) {
+		el = collection[off];
+		if (el.id == 'tz') {
+			dt = new Date(el.innerHTML).toString();
+			// strip timezone name, it is usually wrong when not initialized
+			// from TZ env, but reverse calculated from os data
+			dt = dt.replace(/\s+\(.+\)/, "");
+			el.innerHTML = dt;
+		}
+	}
+}
+window.onload = update_tz;
+"""
+	old_umask = os.umask(0022)
+	f = open(js_file, "w")
+	f.write(js)
+	f.close()
+	os.umask(old_umask)
+
 def main():
 	write_css();
+	write_js();
 	socket.setdefaulttimeout(30)
 	try:
 		init_conf()
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-builder.new/PLD_Builder/bqueue.py?r1=1.16&r2=1.17&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-builder.new/PLD_Builder/request.py?r1=1.84&r2=1.85&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-builder.new/PLD_Builder/request_handler_server.py?r1=1.21&r2=1.22&f=u



More information about the pld-cvs-commit mailing list