teichmann@452: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" teichmann@452: "http://www.w3.org/TR/html4/loose.dtd"> teichmann@452: <% teichmann@452: from cgi import escape teichmann@452: from xml.sax.saxutils import quoteattr teichmann@452: teichmann@452: from datetime import date teichmann@452: %> teichmann@452: <html> teichmann@452: <head> teichmann@452: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> teichmann@452: <link rel="stylesheet" href="styles/style.css" type="text/css" media="screen" /> teichmann@452: <title>Sägewerker - Free Software forestry</title> teichmann@452: </head> teichmann@452: teichmann@452: <body> teichmann@452: <table border="0" width="100%" cellspacing="0" cellpadding="0"> teichmann@452: <tr> teichmann@452: <td> teichmann@460: <a href="index.py"><img src="img/logo.jpg" border="0" alt="" width="533" height="94" /></a> teichmann@452: </td> teichmann@452: </tr> teichmann@452: </table> teichmann@452: <table border="0" width="100%" cellspacing="0" cellpadding="0"> teichmann@452: teichmann@452: <tr> teichmann@452: <td align="left" bgcolor="#E0E0E0" width="9"> teichmann@452: <img src="img/topleft.png" height="9" width="9" alt="" /> teichmann@452: </td> teichmann@452: <td bgcolor="#E0E0E0" width="30"> teichmann@452: <img src="img/clear.png" width="30" height="1" alt="" /> teichmann@452: </td> teichmann@452: <td bgcolor="#E0E0E0"> teichmann@452: <img src="img/clear.png" width="1" height="1" alt="" /> teichmann@452: teichmann@452: </td> teichmann@452: <td bgcolor="#E0E0E0" width="30"> teichmann@452: <img src="img/clear.png" width="30" height="1" alt="" /> teichmann@452: </td> teichmann@452: <td align="right" bgcolor="#E0E0E0" width="9"> teichmann@452: <img src="img/topright.png" height="9" width="9" alt="" /> teichmann@452: </td> teichmann@452: </tr> teichmann@452: teichmann@452: <tr> teichmann@452: <!-- Outer body row --> teichmann@452: <td bgcolor="#E0E0E0"> teichmann@452: <img src="img/clear.png" width="10" height="1" alt="" /> teichmann@452: </td> teichmann@452: <td valign="top" width="99%" bgcolor="#E0E0E0" colspan="3"> teichmann@452: <!-- Inner Tabs / Shell --> teichmann@452: <table border="0" width="100%" cellspacing="0" cellpadding="0"> teichmann@452: <tr> teichmann@452: teichmann@452: <td align="left" bgcolor="#ffffff" width="9"> teichmann@452: <img src="img/topleft-inner.png" height="9" width="9" alt="" /> teichmann@452: </td> teichmann@452: <td bgcolor="#ffffff"> teichmann@452: <img src="img/clear.png" width="1" height="1" alt="" /> teichmann@452: </td> teichmann@452: <td align="right" bgcolor="#ffffff" width="9"> teichmann@452: <img src="img/topright-inner.png" height="9" width="9" alt="" /> teichmann@452: </td> teichmann@452: teichmann@452: </tr> teichmann@452: <tr> teichmann@452: <td bgcolor="#ffffff"> teichmann@452: <img src="img/clear.png" width="10" height="1" alt="" /> teichmann@452: </td> teichmann@452: <td valign="top" width="99%" bgcolor="white" class="css_prison"> teichmann@452: <!-- end main body row --> teichmann@452: <h1><%= escape(description) %></h1> teichmann@452: <%= header %> teichmann@452: <table class="statustable"> teichmann@452: <tr> teichmann@452: <th class="statustablehead">Status</th> teichmann@452: <th class="statustablehead">Package</th> teichmann@452: <th class="statustablehead">Revision</th> teichmann@452: <th class="statustablehead">Start</th> teichmann@452: <th class="statustablehead">Stop</th> teichmann@452: <th class="statustablehead">Notes</th> teichmann@452: </tr> teichmann@452: <% teichmann@452: teichmann@452: def nn(s, d=""): teichmann@452: if not s: return d teichmann@452: return escape(s) teichmann@452: teichmann@452: def pretty_time(t, format="%Y-%m-%d %H:%M:%S"): teichmann@452: if not t: return "<unknown>" teichmann@452: return t.strftime(format) teichmann@452: teichmann@452: teichmann@452: def date_from_datetime(x): teichmann@452: if not x: return None teichmann@452: return date(x.year, x.month, x.day) teichmann@452: teichmann@452: def sort_by_start(a, b): teichmann@452: a_start = a.build_start teichmann@452: b_start = b.build_start teichmann@452: if not a_start and not b_start: return 0 teichmann@452: if not a_start: return 1 teichmann@452: if not b_start: return -1 teichmann@452: return cmp(a_start, b_start) teichmann@452: teichmann@452: track_items = sorted(track_items, cmp=sort_by_start, reverse=True) teichmann@452: teichmann@452: last_date = None teichmann@452: teichmann@452: STATUS2CLASS = { teichmann@452: 'creating_binary_package': 'inprogress', teichmann@468: 'creating_source_package': 'inprogress', aheinecke@472: 'source_package_created': 'inprogress', teichmann@452: 'binary_package_created': 'finished' teichmann@452: } teichmann@452: teichmann@452: STATUS2MSG = { teichmann@452: 'creating_binary_package': 'building binary packages', teichmann@468: 'creating_source_package': 'building source package', aheinecke@472: 'source_package_created': 'preparing build envrionment', aheinecke@472: 'binary_package_created': 'build successful' teichmann@452: } teichmann@452: teichmann@452: for track_item in track_items: teichmann@452: # for all track items teichmann@452: curr_date = date_from_datetime(track_item.build_start) teichmann@452: if curr_date != last_date: teichmann@452: last_date = curr_date teichmann@452: %> teichmann@452: <tr class="date_row"><td colspan="6"><%= pretty_time(last_date, "%Y-%m-%d") %></td></tr> teichmann@452: <% teichmann@452: # date changed teichmann@452: %> teichmann@452: <tr class="<%= STATUS2CLASS.get(track_item.build_status, 'error') %>"> teichmann@452: <td><%= STATUS2MSG.get(track_item.build_status, 'error') %></td> teichmann@452: <td style="font-weight:bold;"><%= nn(track_item.track) %></td> teichmann@452: <td align="right"><%= nn(track_item.revision) %></td> teichmann@452: <td><%= pretty_time(track_item.build_start) %></td> teichmann@452: <td><%= pretty_time(track_item.build_stop) %></td> teichmann@452: <td> teichmann@452: <% teichmann@452: for log_desc, log_path in track_item.build_logs: teichmann@452: # for all logs teichmann@452: %> teichmann@452: [<a href=<%= quoteattr("%s/%s" % (base_dir, log_path)) %>><%= nn(log_desc) %></a>] teichmann@452: teichmann@452: <% teichmann@452: # for all logs teichmann@452: %> teichmann@452: </td> teichmann@452: </tr> teichmann@452: teichmann@452: <% teichmann@452: # for all track itemes teichmann@452: %> teichmann@452: teichmann@452: </table> teichmann@452: teichmann@452: teichmann@452: <!-- end main body row --> teichmann@452: </td> teichmann@452: <td width="10" bgcolor="#ffffff"> teichmann@452: <img src="img/clear.png" width="2" height="1" alt="" /> teichmann@452: </td> teichmann@452: </tr> teichmann@452: teichmann@452: <tr> teichmann@452: <td align="left" bgcolor="#E0E0E0" width="9"> teichmann@452: <img src="img/bottomleft-inner.png" height="11" width="11" alt="" /> teichmann@452: </td> teichmann@452: <td bgcolor="#ffffff"> teichmann@452: <img src="img/clear.png" width="1" height="1" alt="" /> teichmann@452: </td> teichmann@452: <td align="right" bgcolor="#E0E0E0" width="9"> teichmann@452: <img src="img/bottomright-inner.png" height="11" width="11" alt="" /> teichmann@452: teichmann@452: </td> teichmann@452: </tr> teichmann@452: </table> teichmann@452: teichmann@452: <!-- end inner body row --> teichmann@452: teichmann@452: </td> teichmann@452: <td width="10" bgcolor="#E0E0E0"> teichmann@452: <img src="img/clear.png" width="2" height="1" alt="" /> teichmann@452: </td> teichmann@452: teichmann@452: </tr> teichmann@452: <tr> teichmann@452: <td align="left" bgcolor="#E0E0E0" width="9"> teichmann@452: <img src="img/bottomleft.png" height="9" width="9" alt="" /> teichmann@452: </td> teichmann@452: <td bgcolor="#E0E0E0" colspan="3"> teichmann@452: <img src="img/clear.png" width="1" height="1" alt="" /> teichmann@452: </td> teichmann@452: <td align="right" bgcolor="#E0E0E0" width="9"> teichmann@452: teichmann@452: <img src="img/bottomright.png" height="9" width="9" alt="" /> teichmann@452: </td> teichmann@452: </tr> teichmann@452: </table> teichmann@452: <br /> teichmann@452: <center> teichmann@452: <b style="color:white; font-size:13px;"> teichmann@452: This site is hosted by the <a href="http://www.intevation.de">Intevation GmbH</a> teichmann@452: </b> teichmann@452: </center> teichmann@452: teichmann@452: </body> teichmann@452: </html>