Show "1 day" not "1 days"

Closes: #25
This commit is contained in:
Edward Betts 2023-10-21 07:16:21 +01:00
parent 7e439c1fdf
commit aceee6ac4d

View file

@ -2,10 +2,11 @@
"""Web page to show upcoming events."""
import functools
import inspect
import sys
import traceback
from datetime import date, datetime, timezone
from datetime import date, datetime
import flask
import werkzeug
@ -44,22 +45,27 @@ def exception_handler(e: werkzeug.exceptions.InternalServerError) -> tuple[str,
)
def delta_days(today: date, when: date) -> str:
"""Return number of days from today as a string."""
delta = (when - today).days
match delta:
case 0:
return "today"
case 1:
return "1 day"
case _:
return f"{delta:,d} days"
@app.route("/")
def index() -> str:
"""Index page."""
now = datetime.now()
today = now.date()
data = get_data(now)
now_utc = datetime.now(timezone.utc)
days = functools.partial(delta_days, now.date())
def days_hours(when: datetime) -> str:
delta = when - (now if when.tzinfo is None else now_utc)
return f"{delta.days:>5,d} days {delta.seconds // 3600:>2.0f} hours"
def days(when: date) -> str:
return "today" if when == today else f"{(when - today).days:,d} days"
return flask.render_template("index.html", days=days, days_hours=days_hours, **data)
return flask.render_template("index.html", days=days, **data)
if __name__ == "__main__":