diff --git a/application/user/routes.py b/application/user/routes.py index db2c2f8..7e11c82 100644 --- a/application/user/routes.py +++ b/application/user/routes.py @@ -76,11 +76,13 @@ def add_food_item(): ) db.session.commit() print("[DEBUG] New item added") - return redirect(url_for("food_item", barcode=form.barcode.data)) + return redirect( + url_for("user.food_item", barcode=form.barcode.data) + ) else: print("[DEBUG] Invalid form") if form.barcode.data: - return redirect(url_for("food_item", barcode=form.barcode.data)) + return redirect(url_for("user.food_item", barcode=form.barcode.data)) else: return redirect(url_for("scan")) diff --git a/models.py b/models.py index 8870d3b..e58a4e5 100644 --- a/models.py +++ b/models.py @@ -3,6 +3,7 @@ from werkzeug.security import generate_password_hash, check_password_hash from application import db from typing import Optional from forms import FoodItemForm +from datetime import datetime, timezone class User(UserMixin, db.Model): @@ -12,7 +13,8 @@ class User(UserMixin, db.Model): password = db.Column(db.String, nullable=False) is_admin = db.Column(db.Boolean, nullable=False, default=False) - food_items = db.relationship("FoodItem", lazy="dynamic") + food_items = db.relationship("FoodItem", lazy="dynamic", backref="user") + food_logs = db.relationship("FoodLog", lazy="dynamic", backref="user") def __init__( self, username: str, password: str, is_admin: bool = False @@ -50,6 +52,8 @@ class FoodItem(db.Model): fat_100 = db.Column(db.Float, nullable=False) saturated_fat_100 = db.Column(db.Float) + food_logs = db.relationship("FoodLog", backref="food_item", lazy="dynamic") + __table_args__ = ( db.UniqueConstraint("barcode", "owner_id", name="barcode_owner_key"), ) @@ -98,3 +102,22 @@ class FoodItem(db.Model): "fat_100": self.fat_100, "saturated_fat_100": self.saturated_fat_100, } + + +class FoodLog(db.Model): + __tablename__ = "food_log" + id = db.Column(db.Integer, primary_key=True) + datetime = db.Column( + db.DateTime, default=datetime.now(timezone.utc), nullable=False + ) + food_item_id = db.Column( + db.Integer, db.ForeignKey("food_item.id"), nullable=False + ) + user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False) + amount = db.Column(db.Integer, nullable=False) + + def __init__(self, food_item_id: int, user_id: int, amount: int): + super().__init__() + self.food_item_id = food_item_id + self.user_id = user_id + self.amount = amount diff --git a/seed.py b/seed.py index dbc3e05..acf39d3 100644 --- a/seed.py +++ b/seed.py @@ -1,5 +1,5 @@ from application import db, app -from models import User, FoodItem +from models import User, FoodItem, FoodLog with app.app_context(): User.query.delete() @@ -21,4 +21,7 @@ with app.app_context(): ) ) + FoodLog.query.delete() + db.session.add(FoodLog(1, 1, 200)) + db.session.commit()