view contrib/sawmill/web/templates/details.html @ 482:a89f73f7c965

sawmill: Rearranged the postion of some python code in the details template to make it more readable.
author Sascha Teichmann <teichmann@intevation.de>
date Sat, 18 Sep 2010 08:01:18 +0000
parents 9c7e1d957d6b
children 28aa6ac933fb
line wrap: on
line source
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<%
from cgi import escape
from xml.sax.saxutils import quoteattr

from datetime import date, datetime

def nn(s, d=""):
    if not s: return d
    return escape(s)

def pretty_time(t, format="%H:%M:%S"):
    if not t: return "&lt;unknown&gt;"
    return t.strftime(format)

def pretty_timedelta(a, b):
    if a is None or b is None: return "&lt;unknown&gt;"
    td = a - b
    secs = td.days * 24*3600 + td.seconds
    out = []
    if secs > 3600:
        hs = secs // 3600
        out.append("%dh" % hs)
        secs %= 3600
    if secs > 60:
        ms = secs // 60
        out.append("%dm" % ms)
        secs %= 60
    if secs > 0 or not out:
        out.append("%ds" % secs)
    return " ".join(out)

def date_from_datetime(x):
    if not x: return None
    return date(x.year, x.month, x.day)

def sort_by_start(a, b):
    a_start = a.build_start
    b_start = b.build_start
    if not a_start and not b_start: return 0
    if not a_start: return 1
    if not b_start: return -1
    return cmp(a_start, b_start)

def create_tags_link(tag_url):
    return quoteattr(tag_url.replace(
        "svn://anonsvn.kde.org/home/kde",
        "http://websvn.kde.org"))

track_items = sorted(track_items, cmp=sort_by_start, reverse=True)

last_date = None

STATUS2CLASS = {
    'creating_binary_package': 'inprogress',
    'creating_source_package': 'inprogress',
    'source_package_created':  'inprogress',
    'binary_package_created':  'finished'
}

STATUS2MSG = {
    'creating_binary_package': 'building binary packages',
    'creating_source_package': 'building source package',
    'source_package_created':  'preparing build envrionment',
    'binary_package_created':  'success'
}
%>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="icon" href="img/favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" href="styles/style.css" type="text/css" media="screen" />
    <title>S&auml;gewerk - <%= escape(description) %></title>
  </head>

 <body>
  <table border="0" width="100%" cellspacing="0" cellpadding="0">
   <tr>
    <td>
     <a href="index.py"><img src="img/logo.jpg" border="0" alt="" width="533" height="94" /></a>
    </td>
   </tr>
  </table>
  <table border="0" width="100%" cellspacing="0" cellpadding="0">

   <tr>
        <td align="left" bgcolor="#E0E0E0" width="9">
     <img src="img/topleft.png" height="9" width="9" alt="" />
    </td>
        <td bgcolor="#E0E0E0" width="30">
     <img src="img/clear.png" width="30" height="1" alt="" />
    </td>
        <td bgcolor="#E0E0E0">
     <img src="img/clear.png" width="1" height="1" alt="" />

    </td>
        <td bgcolor="#E0E0E0" width="30">
     <img src="img/clear.png" width="30" height="1" alt="" />
    </td>
        <td align="right" bgcolor="#E0E0E0" width="9">
     <img src="img/topright.png" height="9" width="9" alt="" />
    </td>
     </tr>

     <tr>
    <!-- Outer body row -->
    <td bgcolor="#E0E0E0">
     <img src="img/clear.png" width="10" height="1" alt="" />
    </td>
        <td valign="top" width="99%" bgcolor="#E0E0E0" colspan="3">
       <!-- Inner Tabs / Shell -->
         <table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>

             <td align="left" bgcolor="#ffffff" width="9">
        <img src="img/topleft-inner.png" height="9" width="9" alt="" />
       </td>
             <td bgcolor="#ffffff">
        <img src="img/clear.png" width="1" height="1" alt="" />
       </td>
             <td align="right" bgcolor="#ffffff" width="9">
        <img src="img/topright-inner.png" height="9" width="9" alt="" />
       </td>

            </tr>
            <tr>
             <td bgcolor="#ffffff">
        <img src="img/clear.png" width="10" height="1" alt="" />
       </td>
             <td valign="top" width="99%" bgcolor="white" class="css_prison">
        <!-- end main body row -->
<h1><%= escape(description) %></h1>
<%= header %>
<table class="statustable">
<tr>
    <th class="statustablehead">Status</th>
    <th class="statustablehead">Package</th>
    <th class="statustablehead">Revision</th>
    <th class="statustablehead">Start</th>
    <th class="statustablehead">Stop</th>
    <th class="statustablehead">Duration</th>
    <th class="statustablehead">Notes</th>
</tr>
<%
for track_item in track_items:
    # for all track items
    curr_date = date_from_datetime(track_item.build_start)
    if curr_date != last_date:
        last_date = curr_date
%>
<tr class="date_row"><td colspan="6"><%= pretty_time(last_date, "%Y-%m-%d") %> (times in UTC)</td></tr>
<%
    # date changed
%>
<tr class="<%= STATUS2CLASS.get(track_item.build_status, 'error') %>">
<td><%= STATUS2MSG.get(track_item.build_status, 'error') %></td>
<td style="font-weight:bold;"><%= nn(track_item.track) %></td>
<td align="right">
<%
    tags = track_item.build_tags
    if tags:
        # a tag
%>
<a href=<%= create_tags_link(tags) %>><strong><%= nn(track_item.revision) %></strong></a>
<%
    else:
        # not a tag
%>
<%= nn(track_item.revision) %>
<%
    # end if tags
%>
</td>
<td align="right"><%= pretty_time(track_item.build_start) %></td>
<td align="right"><%= pretty_time(track_item.build_stop) %></td>
<td align="right"><%= pretty_timedelta(track_item.stop, track_item.build_start) %></td>
<td>
<%
    for log_desc, log_path in track_item.build_logs:
        # for all logs
%>
[<a href=<%= quoteattr("%s/%s" % (base_dir, log_path)) %>><%= nn(log_desc) %></a>]
<%
    # for all logs
%>
</td>
</tr>
<%
# for all track itemes
%>

</table>
<hr>
report generated at <%= pretty_time(datetime.now(), "%Y-%m-%d %H:%M:%S") %>, powered
by <a href="http://treepkg.wald.intevation.org">Tree Packager</a>


      <!-- end main body row -->
             </td>
             <td width="10" bgcolor="#ffffff">
        <img src="img/clear.png" width="2" height="1" alt="" />
       </td>
            </tr>

            <tr>
             <td align="left" bgcolor="#E0E0E0" width="9">
        <img src="img/bottomleft-inner.png" height="11" width="11" alt="" />
        </td>
                <td bgcolor="#ffffff">
         <img src="img/clear.png" width="1" height="1" alt="" />
        </td>
                <td align="right" bgcolor="#E0E0E0" width="9">
         <img src="img/bottomright-inner.png" height="11" width="11" alt="" />

        </td>
             </tr>
            </table>

          <!-- end inner body row -->

         </td>
         <td width="10" bgcolor="#E0E0E0">
      <img src="img/clear.png" width="2" height="1" alt="" />
     </td>

      </tr>
      <tr>
         <td align="left" bgcolor="#E0E0E0" width="9">
      <img src="img/bottomleft.png" height="9" width="9" alt="" />
     </td>
         <td bgcolor="#E0E0E0" colspan="3">
      <img src="img/clear.png" width="1" height="1" alt="" />
     </td>
         <td align="right" bgcolor="#E0E0E0" width="9">

      <img src="img/bottomright.png" height="9" width="9" alt="" />
     </td>
      </tr>
   </table>
   <br />
   <center>
    <b style="color:white; font-size:13px;">
     This site is hosted by the <a href="http://www.intevation.de">Intevation GmbH</a>
    </b>
   </center>

    </body>
</html>
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)