mirror of
https://github.com/sstent/foodplanner.git
synced 2026-01-25 19:21:37 +00:00
fixed food details not loading on details tab
This commit is contained in:
115
tracker.patch
Normal file
115
tracker.patch
Normal file
@@ -0,0 +1,115 @@
|
||||
--- app/api/routes/tracker.py
|
||||
+++ app/api/routes/tracker.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-from fastapi import APIRouter, Depends, HTTPException, Request, Form, Body
|
||||
+from fastapi import APIRouter, Depends, HTTPException, Request, Form, Body, UploadFile, File
|
||||
from fastapi.responses import HTMLResponse, RedirectResponse
|
||||
from sqlalchemy.orm import Session, joinedload
|
||||
from datetime import date, datetime, timedelta
|
||||
@@ -110,4 +110,94 @@
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
logging.error(f"debug: error removing tracked meal: {e}")
|
||||
- return {"status": "error", "message": str(e)}
|
||||
+ return {"status": "error", "message": str(e)}
|
||||
+
|
||||
+@router.post("/tracker/save_template")
|
||||
+async def tracker_save_template(request: Request, db: Session = Depends(get_db)):
|
||||
+ """save current day's meals as template"""
|
||||
+ try:
|
||||
+ form_data = await request.form()
|
||||
+ person = form_data.get("person")
|
||||
+ date_str = form_data.get("date")
|
||||
+ template_name = form_data.get("template_name")
|
||||
+ logging.info(f"debug: saving template - name={template_name}, person={person}, date={date_str}")
|
||||
+
|
||||
+ # Parse date
|
||||
+ from datetime import datetime
|
||||
+ date = datetime.fromisoformat(date_str).date()
|
||||
+
|
||||
+ # Get tracked day and meals
|
||||
+ tracked_day = db.query(TrackedDay).filter(
|
||||
+ TrackedDay.person == person,
|
||||
+ TrackedDay.date == date
|
||||
+ ).first()
|
||||
+ if not tracked_day:
|
||||
+ return {"status": "error", "message": "No tracked day found"}
|
||||
+
|
||||
+ tracked_meals = db.query(TrackedMeal).filter(
|
||||
+ TrackedMeal.tracked_day_id == tracked_day.id
|
||||
+ ).all()
|
||||
+
|
||||
+ if not tracked_meals:
|
||||
+ return {"status": "error", "message": "No tracked meals found"}
|
||||
+
|
||||
+ # Create new template
|
||||
+ template = Template(name=template_name)
|
||||
+ db.add(template)
|
||||
+ db.flush()
|
||||
+
|
||||
+ # Add meals to template
|
||||
+ for tracked_meal in tracked_meals:
|
||||
+ template_meal = TemplateMeal(
|
||||
+ template_id=template.id,
|
||||
+ meal_id=tracked_meal.meal_id,
|
||||
+ meal_time=tracked_meal.meal_time
|
||||
+ )
|
||||
+ db.add(template_meal)
|
||||
+
|
||||
+ db.commit()
|
||||
+ return {"status": "success", "message": "Template saved successfully"}
|
||||
+ except Exception as e:
|
||||
+ db.rollback()
|
||||
+ logging.error(f"debug: error saving template: {e}")
|
||||
+ return {"status": "error", "message": str(e)}
|
||||
+
|
||||
+@router.post("/tracker/apply_template")
|
||||
+async def tracker_apply_template(request: Request, db: Session = Depends(get_db)):
|
||||
+ """apply template to current day"""
|
||||
+ try:
|
||||
+ form_data = await request.form()
|
||||
+ person = form_data.get("person")
|
||||
+ date_str = form_data.get("date")
|
||||
+ template_id = form_data.get("template_id")
|
||||
+ logging.info(f"debug: applying template - template_id={template_id}, person={person}, date={date_str}")
|
||||
+
|
||||
+ # Parse date
|
||||
+ from datetime import datetime
|
||||
+ date = datetime.fromisoformat(date_str).date()
|
||||
+
|
||||
+ # Get template meals
|
||||
+ template_meals = db.query(TemplateMeal).filter(
|
||||
+ TemplateMeal.template_id == template_id
|
||||
+ ).all()
|
||||
+
|
||||
+ if not template_meals:
|
||||
+ return {"status": "error", "message": "Template has no meals"}
|
||||
+
|
||||
+ # Get or create tracked day
|
||||
+ tracked_day = db.query(TrackedDay).filter(
|
||||
+ TrackedDay.person == person,
|
||||
+ TrackedDay.date == date
|
||||
+ ).first()
|
||||
+ if not tracked_day:
|
||||
+ tracked_day = TrackedDay(person=person, date=date, is_modified=True)
|
||||
+ db.add(tracked_day)
|
||||
+ db.flush()
|
||||
+
|
||||
+ # Clear existing meals and add template meals
|
||||
+ db.query(TrackedMeal).filter(TrackedMeal.tracked_day_id == tracked_day.id).delete()
|
||||
+
|
||||
+ for template_meal in template_meals:
|
||||
+ tracked_meal = TrackedMeal(
|
||||
+ tracked_day_id=tracked_day.id,
|
||||
+ meal_id=template_meal.meal_id,
|
||||
+ meal_time=template_meal.meal_time
|
||||
+ )
|
||||
+ db.add(tracked_meal)
|
||||
+
|
||||
+ tracked_day.is_modified = True
|
||||
+ db.commit()
|
||||
+ return {"status": "success", "message": "Template applied successfully"}
|
||||
+ except Exception as e:
|
||||
+ db.rollback()
|
||||
+ logging.error(f"debug: error applying template: {e}")
|
||||
+ return {"status": "error", "message": str(e)}
|
||||
Reference in New Issue
Block a user