Add holiday page

Page showing holidays in countries of interest, just in English for now.
This commit is contained in:
Edward Betts 2024-01-16 12:06:46 +00:00
parent 69e10db8ef
commit 322b65237d
3 changed files with 36 additions and 1 deletions

View file

@ -0,0 +1,18 @@
{% extends "base.html" %}
{% from "macros.html" import display_date %}
{% block content %}
<div class="container-fluid mt-2">
<h1>Holidays</h1>
<table class="table table-hover w-auto">
{% for item in items %}
{% set country = get_country(item.country) %}
<tr>
<td class="text-end">{{ display_date(item.date) }}</td>
<td>{{ country.flag }} {{ country.name }}</td>
<td>{{ item.name }}</td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}

View file

@ -8,6 +8,7 @@
{"endpoint": "accommodation_list", "label": "Accommodation" }, {"endpoint": "accommodation_list", "label": "Accommodation" },
{"endpoint": "gaps_page", "label": "Gaps" }, {"endpoint": "gaps_page", "label": "Gaps" },
{"endpoint": "launch_list", "label": "Space launches" }, {"endpoint": "launch_list", "label": "Space launches" },
{"endpoint": "holiday_list", "label": "Holidays" },
] %} ] %}

View file

@ -7,7 +7,7 @@ import operator
import os.path import os.path
import sys import sys
import traceback import traceback
from datetime import date, datetime from datetime import date, datetime, timedelta
import flask import flask
import werkzeug import werkzeug
@ -16,6 +16,7 @@ import yaml
import agenda.data import agenda.data
import agenda.error_mail import agenda.error_mail
import agenda.holidays
import agenda.thespacedevs import agenda.thespacedevs
import agenda.trip import agenda.trip
from agenda import format_list_with_ampersand, travel from agenda import format_list_with_ampersand, travel
@ -246,5 +247,20 @@ def trip_page(start: str) -> str:
) )
@app.route("/holidays")
def holiday_list() -> str:
"""List of holidays."""
today = date.today()
data_dir = app.config["DATA_DIR"]
next_year = today + timedelta(days=1 * 365)
items = agenda.holidays.get_all(today - timedelta(days=2), next_year, data_dir)
items.sort(key=lambda item: (item.date, item.country))
return flask.render_template(
"holiday_list.html", items=items, get_country=agenda.get_country
)
if __name__ == "__main__": if __name__ == "__main__":
app.run(host="0.0.0.0") app.run(host="0.0.0.0")