diff --git a/templates/navbar.html b/templates/navbar.html
index 42626fd..0e7d7a1 100644
--- a/templates/navbar.html
+++ b/templates/navbar.html
@@ -5,6 +5,7 @@
{"endpoint": "trip_future_list", "label": "Future trip" },
{"endpoint": "trip_past_list", "label": "Past trip" },
{"endpoint": "conference_list", "label": "Conference" },
+ {"endpoint": "past_conference_list", "label": "Past conference" },
{"endpoint": "travel_list", "label": "Travel" },
{"endpoint": "accommodation_list", "label": "Accommodation" },
{"endpoint": "gaps_page", "label": "Gap" },
diff --git a/web_view.py b/web_view.py
index 8b64586..7bfde9f 100755
--- a/web_view.py
+++ b/web_view.py
@@ -24,7 +24,7 @@ import agenda.holidays
import agenda.thespacedevs
import agenda.trip
from agenda import format_list_with_ampersand, travel, uk_tz
-from agenda.types import Trip
+from agenda.types import StrDict, Trip
app = flask.Flask(__name__)
app.debug = False
@@ -141,15 +141,13 @@ def as_date(d: date | datetime) -> date:
return d.date() if isinstance(d, datetime) else d
-@app.route("/conference")
-def conference_list() -> str:
- """Page showing a list of conferences."""
+def build_conference_list() -> list[StrDict]:
+ """Build conference list."""
data_dir = app.config["PERSONAL_DATA"]
filepath = os.path.join(data_dir, "conferences.yaml")
- items = yaml.safe_load(open(filepath))
- today = date.today()
-
+ items: list[StrDict] = yaml.safe_load(open(filepath))
conference_trip_lookup = {}
+
for trip in agenda.trip.build_trip_list():
for trip_conf in trip.conferences:
key = (trip_conf["start"], trip_conf["name"])
@@ -168,8 +166,15 @@ def conference_list() -> str:
conf["linked_trip"] = this_trip
items.sort(key=operator.itemgetter("start_date"))
+ return items
+
+
+@app.route("/conference")
+def conference_list() -> str:
+ """Page showing a list of conferences."""
+ today = date.today()
+ items = build_conference_list()
- past = [conf for conf in items if conf["end_date"] < today]
current = [
conf
for conf in items
@@ -180,7 +185,6 @@ def conference_list() -> str:
return flask.render_template(
"conference_list.html",
current=current,
- past=past,
future=future,
today=today,
get_country=agenda.get_country,
@@ -188,6 +192,19 @@ def conference_list() -> str:
)
+@app.route("/conference/past")
+def past_conference_list() -> str:
+ """Page showing a list of conferences."""
+ today = date.today()
+ return flask.render_template(
+ "conference_list.html",
+ past=[conf for conf in build_conference_list() if conf["end_date"] < today],
+ today=today,
+ get_country=agenda.get_country,
+ fx_rate=agenda.fx.get_rates(app.config),
+ )
+
+
@app.route("/accommodation")
def accommodation_list() -> str:
"""Page showing a list of past, present and future accommodation."""