diff --git a/agenda/data.py b/agenda/data.py index c1f6f4d..4bbd76f 100644 --- a/agenda/data.py +++ b/agenda/data.py @@ -182,11 +182,8 @@ async def get_data(now: datetime, config: flask.config.Config) -> AgendaData: plus_365 = now + timedelta(days=365) t0 = time() - offline_mode = bool(config.get("OFFLINE_MODE")) result_list = await asyncio.gather( - time_function( - "gwr_advance_tickets", gwr.advance_ticket_date, data_dir, offline_mode - ), + time_function("gwr_advance_tickets", gwr.advance_ticket_date, data_dir), time_function( "backwell_bins", n_somerset_waste_collection_events, diff --git a/agenda/gwr.py b/agenda/gwr.py index cc7e968..750af90 100644 --- a/agenda/gwr.py +++ b/agenda/gwr.py @@ -48,13 +48,11 @@ def extract_weekday_date(html: str) -> date | None: return None -async def advance_tickets_page_html( - data_dir: str, ttl: int = 60 * 60 * 6, force_cache: bool = False -) -> str: +async def advance_tickets_page_html(data_dir: str, ttl: int = 60 * 60 * 6) -> str: """Get advance-tickets web page HTML with cache.""" filename = os.path.join(data_dir, "advance-tickets.html") mtime = os.path.getmtime(filename) if os.path.exists(filename) else 0 - if force_cache or (time() - mtime) < ttl: # use cache + if (time() - mtime) < ttl: # use cache return open(filename).read() async with httpx.AsyncClient() as client: r = await client.get(url) @@ -63,7 +61,7 @@ async def advance_tickets_page_html( return html -async def advance_ticket_date(data_dir: str, force_cache: bool = False) -> date | None: +async def advance_ticket_date(data_dir: str) -> date | None: """Get GWR advance tickets date with cache.""" - html = await advance_tickets_page_html(data_dir, force_cache=force_cache) + html = await advance_tickets_page_html(data_dir) return extract_weekday_date(html) diff --git a/templates/conference_list.html b/templates/conference_list.html index e24146e..b46376e 100644 --- a/templates/conference_list.html +++ b/templates/conference_list.html @@ -43,7 +43,7 @@
{{ section("Current", current, "attending") }} {{ section("Future", future, "going") }} - {{ section("Past", past|reverse|list, "went") }} + {{ section("Past", past|reverse, "went") }}
diff --git a/templates/trip_list.html b/templates/trip_list.html new file mode 100644 index 0000000..8a497f9 --- /dev/null +++ b/templates/trip_list.html @@ -0,0 +1,138 @@ +{% extends "base.html" %} + +{% from "macros.html" import trip_link, display_date_no_year, display_date, conference_row, accommodation_row, flight_row, train_row, ferry_row with context %} + +{% set row = { "flight": flight_row, "train": train_row, "ferry": ferry_row } %} + +{% block title %}Trips - Edward Betts{% endblock %} + +{% block style %} + + + +{% set conference_column_count = 8 %} +{% set accommodation_column_count = 8 %} +{% set travel_column_count = 10 %} + +{% endblock %} + +{% macro section(heading, item_list, badge) %} + {% if item_list %} + {% set items = item_list | list %} +

{{ heading }}

+

{{ items | count }} trips

+ {% for trip in items %} + {% set total_distance = trip.total_distance() %} + {% set end = trip.end %} +
+

+ {{ trip_link(trip) }} + ({{ display_date(trip.start) }})

+
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 %} + {% if total_distance %} +
Total distance: + {{ "{:,.0f} km / {:,.0f} miles".format(total_distance, total_distance / 1.60934) }} +
+ {% 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 %} +
+ + +

Trips

+
+
+
+
+
+
+ {{ section("Current", current, "attending") }} + {{ section("Future", future, "going") }} +
+
+
+
+
+ {{ section("Past", past|reverse, "went") }} +
+{% endblock %} + +{% block scripts %} + + + + + + + +{% endblock %} diff --git a/web_view.py b/web_view.py index a73a1b1..b5270f9 100755 --- a/web_view.py +++ b/web_view.py @@ -379,6 +379,41 @@ def get_trip_list( ] +@app.route("/trip/old") +def trip_old_list() -> str: + """Page showing a list of trips.""" + route_distances = agenda.travel.load_route_distances(app.config["DATA_DIR"]) + trip_list = get_trip_list(route_distances) + 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] + + future_coordinates, future_routes = agenda.trip.get_coordinates_and_routes(future) + past_coordinates, past_routes = agenda.trip.get_coordinates_and_routes(past) + + return flask.render_template( + "trip_list.html", + current=current, + past=past, + future=future, + future_coordinates=future_coordinates, + future_routes=future_routes, + past_coordinates=past_coordinates, + past_routes=past_routes, + today=today, + get_country=agenda.get_country, + format_list_with_ampersand=format_list_with_ampersand, + fx_rate=agenda.fx.get_rates(app.config), + ) + + @app.route("/trip") def trip_list() -> werkzeug.Response: """Trip list to redirect to future trip list."""