From aceee6ac4db77f472913c299883b610248d8996f Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Sat, 21 Oct 2023 07:16:21 +0100 Subject: [PATCH] Show "1 day" not "1 days" Closes: #25 --- web_view.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/web_view.py b/web_view.py index 1001d2d..3314156 100755 --- a/web_view.py +++ b/web_view.py @@ -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__":