Add week and year parameters to weekends page.

Fixes #190
This commit is contained in:
Edward Betts 2025-07-15 17:42:47 +02:00
parent 220256dd91
commit 7f12282c42

View file

@ -231,14 +231,29 @@ async def gaps_page() -> str:
@app.route("/weekends")
async def weekends() -> str:
"""List of available weekends using an optional date parameter."""
"""List of available weekends using an optional date, week, or year parameter."""
today = datetime.now().date()
date_str = flask.request.args.get("date")
week_str = flask.request.args.get("week")
year_str = flask.request.args.get("year")
if date_str:
try:
start = datetime.strptime(date_str, "%Y-%m-%d").date()
except ValueError:
return flask.abort(400, description="Invalid date format. Use YYYY-MM-DD.")
elif week_str:
try:
week = int(week_str)
year = int(year_str) if year_str else today.year
if week < 1 or week > 53:
return flask.abort(400, description="Week number must be between 1 and 53.")
# Calculate the date of the first day of the given week
jan_1 = date(year, 1, 1)
week_1_start = jan_1 - timedelta(days=jan_1.weekday())
start = week_1_start + timedelta(weeks=week - 1)
except ValueError:
return flask.abort(400, description="Invalid week or year format. Use integers.")
else:
start = date(today.year, 1, 1)