From 882fa52ae571f83bc47b6ef1ab83d84cd1307757 Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Sat, 15 Jun 2024 20:56:37 +0100 Subject: [PATCH] Move past conferences to separate page Closes: #157 --- templates/navbar.html | 1 + web_view.py | 35 ++++++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 9 deletions(-) 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."""