<% import datetime %> <%include file="navigation.html"/>

Release ${release["name"] | h}

<% closed_issues = filter(lambda issue: issue["status"] == ":closed", issues) open_issues = filter(lambda issue: issue["status"] != ":closed", issues) issue_count = len(issues) closed_count = len(closed_issues) open_count = len(open_issues) closed_percent = closed_count * 100 / issue_count if issue_count else 100 open_percent = open_count * 100 / issue_count if issue_count else 100 keywords = { ":released":"Released", ":unreleased":"Unreleased" } %>

Details

Status:
${keywords[release["status"]] | h}
Progress:
% if release["status"] != ":released":
${" " * closed_percent}${" " * open_percent}${closed_count} / ${issue_count | h} (${closed_percent | h}%)
% else:
${release["release_time"].strftime("Released %B %d, %Y") | h}
% endif

Open Issues

% if len(open_issues): % for issue in sorted(open_issues, lambda lhs, rhs: cmp(lhs["creation_time"], rhs["creation_time"]), reverse=True): % endfor
${issue['creation_time'].date() | h}${issue['title'] | h}
% else:

No open issues.

% endif

Closed Issues

% if len(closed_issues): % for issue in sorted(closed_issues, lambda lhs, rhs: cmp(lhs["creation_time"], rhs["creation_time"]), reverse=True): % endfor
${issue['creation_time'].date() | h}${issue['title'] | h}
% else:

No closed issues.

% endif

Release Log

% for event in release["log_events"]: % endfor
${event[0].strftime("%Y-%m-%d %H:%M UTC") | h}${event[1] | h}${event[2] | h}