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):
${issue['creation_time'].date() | h} | ${issue['title'] | h} |
% endfor
% 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):
${issue['creation_time'].date() | h} | ${issue['title'] | h} |
% endfor
% else:
No closed issues.
% endif
Release Log
% for event in release["log_events"]:
${event[0].strftime("%Y-%m-%d %H:%M UTC") | h} | ${event[1] | h} | ${event[2] | h} |
% endfor