diff --git a/templates/trips.html b/templates/trips.html index 7b4e2f4..664c49e 100644 --- a/templates/trips.html +++ b/templates/trips.html @@ -2,6 +2,8 @@ {% from "macros.html" import display_date_no_year, conference_row, accommodation_row, flight_row, train_row with context %} +{% set row = { "flight": flight_row, "train": train_row } %} + {% block style %} {% set conference_column_count = 6 %} {% set accommodation_column_count = 7 %} @@ -34,42 +36,50 @@ {% endblock %} +{% macro section(heading, item_list, badge) %} + {% if item_list %} +

{{ heading }}

+ {% for trip in item_list %} + {% set end = trip.end %} +
+

{{ trip.title }} ({{ trip.start.strftime("%b %Y") }})

+
Countries: {{ trip.countries_str }}
+ {% if end %} +
Dates: {{ display_date_no_year(trip.start) }} to {{ display_date_no_year(end) }}
+ {% else %} +
Start: {{ display_date_no_year(trip.start) }} (end date missing)
+ {% endif %} +
+ {% for conf in trip.conferences %} + {{ conference_row(conf, "going") }} + {% endfor %} +
+ +
+ {% for conf in trip.accommodation %} + {{ accommodation_row(conf, "going") }} + {% endfor %} +
+ +
+ {% for item in trip.travel %} + {{ row[item.type](item) }} + {% endfor %} +
+
+ {% endfor %} + {% endif %} +{% endmacro %} + + {% block content %}
- {% set row = { "flight": flight_row, "train": train_row } %}

Trips

- {% for trip in trips %} - {% set end = trip.end %} -
-

{{ trip.title }} ({{ trip.start.strftime("%b %Y") }})

-
Countries: {{ trip.countries_str }}
- {% if end %} -
Dates: {{ display_date_no_year(trip.start) }} to {{ display_date_no_year(end) }}
- {% else %} -
Start: {{ display_date_no_year(trip.start) }} (end date missing)
- {% endif %} -
- {% for conf in trip.conferences %} - {{ conference_row(conf, "going") }} - {% endfor %} -
- -
- {% for conf in trip.accommodation %} - {{ accommodation_row(conf, "going") }} - {% endfor %} -
- -
- {% for item in trip.travel %} - {{ row[item.type](item) }} - {% endfor %} -
-
- {% endfor %} + {{ section("Current", current, "attending") }} + {{ section("Future", future, "going") }} + {{ section("Past", past|reverse, "went") }}
{% endblock %} - diff --git a/web_view.py b/web_view.py index 758ba3b..5cc1d89 100755 --- a/web_view.py +++ b/web_view.py @@ -164,9 +164,8 @@ def load_travel(travel_type: str) -> list[StrDict]: return items -@app.route("/trip") -def trip_list() -> str: - """Page showing a list of trips.""" +def build_trip_list() -> list[Trip]: + """Generate list of trips.""" trips: dict[date, Trip] = {} data_dir = app.config["PERSONAL_DATA"] @@ -190,11 +189,30 @@ def trip_list() -> str: trips[start] = Trip(start=start) getattr(trips[start], key).append(item) - trip_list = [trip for _, trip in sorted(trips.items(), reverse=True)] + return [trip for _, trip in sorted(trips.items())] + + +@app.route("/trip") +def trip_list() -> str: + """Page showing a list of trips.""" + trip_list = build_trip_list() + + today = date.today() + current = [ + item + for item in trip_list + if item.start <= today and (item.end or item.start) >= today + ] + + past = [item for item in trip_list if (item.end or item.start) < today] + future = [item for item in trip_list if item.start > today] return flask.render_template( "trips.html", - trips=trip_list, + current=current, + past=past, + future=future, + today=today, get_country=agenda.get_country, format_list_with_ampersand=format_list_with_ampersand, )