Add page showing list of conferences
This commit is contained in:
parent
71e9ce4af8
commit
d67944a171
|
@ -92,8 +92,11 @@
|
||||||
<div class="container-fluid mt-2">
|
<div class="container-fluid mt-2">
|
||||||
<h1>Agenda</h1>
|
<h1>Agenda</h1>
|
||||||
<p>
|
<p>
|
||||||
<a href="/tools">← personal tools</a> |
|
<a href="/tools">← personal tools</a>
|
||||||
<a href="{{ url_for("travel_page") }}">travel</a>
|
|
|
||||||
|
<a href="{{ url_for("travel_list") }}">travel</a>
|
||||||
|
|
|
||||||
|
<a href="{{ url_for("conference_list") }}">conference</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
30
web_view.py
30
web_view.py
|
@ -3,13 +3,15 @@
|
||||||
"""Web page to show upcoming events."""
|
"""Web page to show upcoming events."""
|
||||||
|
|
||||||
import inspect
|
import inspect
|
||||||
|
import os.path
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
from datetime import datetime
|
from datetime import date, datetime
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
import werkzeug
|
import werkzeug
|
||||||
import werkzeug.debug.tbtools
|
import werkzeug.debug.tbtools
|
||||||
|
import yaml
|
||||||
|
|
||||||
import agenda.data
|
import agenda.data
|
||||||
import agenda.travel
|
import agenda.travel
|
||||||
|
@ -55,18 +57,32 @@ async def index() -> str:
|
||||||
|
|
||||||
|
|
||||||
@app.route("/travel")
|
@app.route("/travel")
|
||||||
def travel_page() -> str:
|
def travel_list() -> str:
|
||||||
"""Page showing a list of upcoming travel."""
|
"""Page showing a list of upcoming travel."""
|
||||||
now = datetime.now()
|
|
||||||
|
|
||||||
config = agenda.data.get_config()
|
config = agenda.data.get_config()
|
||||||
data_dir = config["data"]["personal-data"]
|
data_dir = config["data"]["personal-data"]
|
||||||
flights = agenda.travel.parse_yaml("flights", data_dir)
|
flights = agenda.travel.parse_yaml("flights", data_dir)
|
||||||
trains = agenda.travel.parse_yaml("trains", data_dir)
|
trains = agenda.travel.parse_yaml("trains", data_dir)
|
||||||
|
|
||||||
return flask.render_template(
|
return flask.render_template("travel.html", flights=flights, trains=trains)
|
||||||
"travel.html", today=now.date(), flights=flights, trains=trains
|
|
||||||
)
|
|
||||||
|
def as_date(d: date | datetime) -> date:
|
||||||
|
"""Date of event."""
|
||||||
|
return d.date() if isinstance(d, datetime) else d
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/conference")
|
||||||
|
def conference_list() -> str:
|
||||||
|
"""Page showing a list of conferences."""
|
||||||
|
config = agenda.data.get_config()
|
||||||
|
data_dir = config["data"]["personal-data"]
|
||||||
|
filepath = os.path.join(data_dir, "conferences.yaml")
|
||||||
|
item_list = yaml.safe_load(open(filepath))["conferences"]
|
||||||
|
|
||||||
|
item_list.sort(key=lambda conf: as_date(conf["start"]))
|
||||||
|
|
||||||
|
return flask.render_template("conference_list.html", item_list=item_list)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in a new issue