GWR ticket date mail shows weekends

GWR advance ticket change email now shows Saturdays and Sundays in
addition to Weekdays.

Switched from ISO dates to human readable dates.

Closes: #177
This commit is contained in:
Edward Betts 2024-09-23 09:22:20 +01:00
parent 197f6e5bfd
commit 488ecf8b71

View file

@ -54,26 +54,49 @@ def update_gwr_advance_ticket_date(config: flask.config.Config) -> None:
"""Update GWR advance ticket date cache.""" """Update GWR advance ticket date cache."""
filename = os.path.join(config["DATA_DIR"], "advance-tickets.html") filename = os.path.join(config["DATA_DIR"], "advance-tickets.html")
existing_html = open(filename).read() existing_html = open(filename).read()
existing_date = agenda.gwr.extract_weekday_date(existing_html)
existing_dates = agenda.gwr.extract_dates(existing_html)
assert existing_dates
assert list(existing_dates.keys()) == ["Weekdays", "Saturdays", "Sundays"]
new_html = requests.get(agenda.gwr.url).text new_html = requests.get(agenda.gwr.url).text
open(filename, "w").write(new_html)
new_date = agenda.gwr.extract_weekday_date(new_html) new_dates = agenda.gwr.extract_dates(new_html)
assert new_dates
assert list(new_dates.keys()) == ["Weekdays", "Saturdays", "Sundays"]
if existing_date == new_date: if existing_dates == new_dates:
if sys.stdin.isatty(): if sys.stdin.isatty():
print("date has't changed:", existing_date) print(filename)
print(agenda.gwr.url)
print("dates haven't changed:", existing_dates)
return return
subject = f"New GWR advance ticket booking date: {new_date}" open(filename, "w").write(new_html)
body = f"""Old date: {existing_date}
New date: {new_date} subject = (
"New GWR advance ticket booking date: "
+ f'{new_dates["Weekdays"].strftime("%d %b %Y")} (Weekdays)'
)
body = f"""
{"\n".join(f'{key}: {when.strftime("%d %b %Y")}' for key, when in new_dates.items())}
{agenda.gwr.url} {agenda.gwr.url}
Agenda: https://edwardbetts.com/agenda/ Agenda: https://edwardbetts.com/agenda/
""" """
if sys.stdin.isatty():
print(filename)
print(agenda.gwr.url)
print()
print("dates have changed")
print("old:", existing_dates)
print("new:", new_dates)
print()
print(subject)
print(body)
agenda.mail.send_mail(config, subject, body) agenda.mail.send_mail(config, subject, body)