Preserve date offset in meal logging flow

Adds session storage of the 'offset' parameter to ensure the correct date is used when adding meals and redirecting to the daily log. Updates the add_meal and user routes to handle and validate the offset, improving navigation and data consistency for users logging meals on different days.
This commit is contained in:
2025-08-07 21:15:38 +02:00
parent 4a480eeee3
commit f81329cedd
2 changed files with 13 additions and 2 deletions

View File

@@ -6,12 +6,14 @@ from flask import (
session,
request,
jsonify,
abort,
)
from flask_login import current_user
from forms import FoodItemForm, FoodLogForm
from application import db
from models import FoodItem, FoodLog
from sqlalchemy import and_
from datetime import datetime, timedelta, timezone
bp = Blueprint(
"add_meal",
@@ -116,7 +118,13 @@ def step4():
form = FoodLogForm()
item = db.session.get(FoodItem, session["item_id"])
assert item
offset = session["offset"]
if offset is None or item is None:
abort(404)
today = datetime.now(timezone.utc).date()
day = today + timedelta(days=offset)
if form.validate_on_submit():
assert form.amount.data
db.session.add(
@@ -125,12 +133,13 @@ def step4():
user_id=current_user.id,
amount=form.amount.data,
part_of_day=session["meal_type"],
date_=day,
)
)
db.session.commit()
session.pop("meal_type")
session.pop("item_id")
return redirect("/")
return redirect(url_for("user.daily_log", offset=offset))
match session["meal_type"]:
case 0:

View File

@@ -5,6 +5,7 @@ from flask import (
render_template,
flash,
abort,
session,
)
from flask_login import current_user
from application import db
@@ -76,6 +77,7 @@ def daily_log(offset: int = 0):
abort(400) # or handle invalid input
today = datetime.now(timezone.utc).date()
day = today + timedelta(days=offset)
session["offset"] = offset
logs_today = current_user.food_logs.filter_by(date_=day).all()
logs = [[], [], [], []]
calories: float = 0