24
24
return "%s-importance" % importance.lower()
27
def get_warn_date(start_date, age):
28
"""Get the warning date for this bug, if any."""
30
start_date += timedelta(days=1)
31
if start_date.weekday() not in (5, 6):
36
def warn(bug, in_progress_age, review_age, now=None):
37
"""Determine if C{bug} should have a warning badge shown for it.
39
@param bug: A L{Bug} instance.
40
@param in_progress_age: The number of days the bug must be in progress
41
before a warning is shown.
42
@param review_age: The number of days the bug must be in the review queue
43
before a warning is shown.
44
@param now: Optionally, the date to use when checking for warning status.
46
now = now if now else datetime.now(bug.in_progress_date.tzinfo)
47
if bug.needs_review():
48
warn_date = get_warn_date(bug.merge_proposal_creation_date, review_age)
49
return now > warn_date
50
elif bug.in_progress():
51
warn_date = get_warn_date(bug.in_progress_date, in_progress_age)
52
return now > warn_date
27
56
def generate_html(milestone):
28
57
"""Generate an HTML kanban board to represent L{Bug}s in C{milestone}."""
29
58
environment = Environment(loader=PackageLoader("kanban", "templates"))
30
59
environment.filters["branch_name"] = branch_name
31
60
environment.filters["branch_url"] = branch_url
32
61
environment.filters["importance_css_class"] = importance_css_class
62
environment.filters["warn"] = lambda bug: warn(bug, 3, 1)
63
environment.filters["danger"] = lambda bug: warn(bug, 7, 3)
33
64
template = environment.get_template("kanban.html")
34
65
data = {"milestone": milestone,
35
66
"now": datetime.utcnow().strftime("%a %e %b at %H:%M UTC")}