#!/usr/bin/env python2 # coding: utf-8 TEMPLATE=""" {{ title }}
{% if coming_soon %} {% for item in coming_soon %} {% endfor %} {% endif %} {% if past_workshops %} {% for item in past_workshops[:5] %} {% endfor %} {% if past_workshops[5:] %} {% endif %} {% endif %} {% if recorded_workshops %} {% for item in recorded_workshops %} {% endfor %} {% endif %} {% if self_paced %} {% for item in self_paced %} {% endfor %} {% endif %} {% if all_past_workshops %} {% for item in all_past_workshops %} {% if item.video %} {% endif %} {% endfor %} {% endif %}
{{ title }}
Coming soon near you
{{ item.title }} {% if item.slides %}{% endif %}
Scheduled {{ item.prettydate }} at {{ item.event }} in {{item.city }}.
Past workshops
{{ item.title }} {% if item.video %}{% endif %}
Delivered {{ item.prettydate }} at {{ item.event }} in {{item.city }}.
... and at least {{ past_workshops[5:] | length }} more.
Recorded workshops
{{ item.title }}
Delivered {{ item.prettydate }} at {{ item.event }} in {{item.city }}.
Self-paced tutorials
{{ item.title }}
Past workshops
{{ item.title }}
Delivered {{ item.prettydate }} at {{ item.event }} in {{item.city }}.
""".decode("utf-8") import datetime import jinja2 import yaml items = yaml.load(open("index.yaml")) for item in items: if "date" in item: date = item["date"] suffix = { 1: "st", 2: "nd", 3: "rd", 21: "st", 22: "nd", 23: "rd", 31: "st"}.get(date.day, "th") # %e is a non-standard extension (it displays the day, but without a # leading zero). If strftime fails with ValueError, try to fall back # on %d (which displays the day but with a leading zero when needed). try: item["prettydate"] = date.strftime("%B %e{}, %Y").format(suffix) except ValueError: item["prettydate"] = date.strftime("%B %d{}, %Y").format(suffix) today = datetime.date.today() coming_soon = [i for i in items if i.get("date") and i["date"] >= today] coming_soon.sort(key=lambda i: i["date"]) past_workshops = [i for i in items if i.get("date") and i["date"] < today] past_workshops.sort(key=lambda i: i["date"], reverse=True) self_paced = [i for i in items if not i.get("date")] recorded_workshops = [i for i in items if i.get("video")] template = jinja2.Template(TEMPLATE) with open("index.html", "w") as f: f.write(template.render( title="Container Training", coming_soon=coming_soon, past_workshops=past_workshops, self_paced=self_paced, recorded_workshops=recorded_workshops ).encode("utf-8")) with open("past.html", "w") as f: f.write(template.render( title="Container Training", all_past_workshops=past_workshops ).encode("utf-8"))