teichmann@452: 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: teichmann@452: teichmann@452: teichmann@452: teichmann@452: Sägewerker - Free Software forestry teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452:

<%= escape(description) %>

teichmann@452: <%= header %> teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: 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@452: 'binary_package_created': 'finished' teichmann@452: } teichmann@452: teichmann@452: STATUS2MSG = { teichmann@452: 'creating_binary_package': 'building binary packages', teichmann@452: '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: teichmann@452: <% teichmann@452: # date changed teichmann@452: %> teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: <% teichmann@452: # for all track itemes teichmann@452: %> teichmann@452: teichmann@452:
StatusPackageRevisionStartStopNotes
<%= pretty_time(last_date, "%Y-%m-%d") %>
<%= STATUS2MSG.get(track_item.build_status, 'error') %><%= nn(track_item.track) %><%= nn(track_item.revision) %><%= pretty_time(track_item.build_start) %><%= pretty_time(track_item.build_stop) %> teichmann@452: <% teichmann@452: for log_desc, log_path in track_item.build_logs: teichmann@452: # for all logs teichmann@452: %> teichmann@452: [><%= nn(log_desc) %>] teichmann@452: teichmann@452: <% teichmann@452: # for all logs teichmann@452: %> teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452: teichmann@452:
teichmann@452:
teichmann@452:
teichmann@452: teichmann@452: This site is hosted by the Intevation GmbH teichmann@452: teichmann@452:
teichmann@452: teichmann@452: teichmann@452: