mirror of
https://github.com/sstent/foodplanner.git
synced 2026-01-25 19:21:37 +00:00
125 lines
4.4 KiB
Python
125 lines
4.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Script to fix the incomplete tracker.py file
|
|
"""
|
|
|
|
def fix_tracker_file():
|
|
file_path = "app/api/routes/tracker.py"
|
|
|
|
with open(file_path, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check if file is incomplete (ends abruptly)
|
|
if content.strip().endswith('@router.post("/tracker/save_template")'):
|
|
print("File is incomplete, adding missing content...")
|
|
|
|
missing_content = '''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)}'''
|
|
|
|
# Append the missing content
|
|
with open(file_path, 'a') as f:
|
|
f.write('\n' + missing_content)
|
|
|
|
print("Tracker.py file fixed successfully!")
|
|
else:
|
|
print("Tracker.py file appears to be complete")
|
|
|
|
if __name__ == "__main__":
|
|
fix_tracker_file() |