mirror of
https://github.com/StefBuwalda/cal_counter.git
synced 2025-10-30 03:10:00 +00:00
Add FoodLog model and update relationships
Introduces the FoodLog model to track user food consumption, adds relationships between User, FoodItem, and FoodLog, and updates seed.py to include sample FoodLog data. Also fixes route redirection to use the correct blueprint namespace.
This commit is contained in:
@@ -76,11 +76,13 @@ def add_food_item():
|
|||||||
)
|
)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
print("[DEBUG] New item added")
|
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:
|
else:
|
||||||
print("[DEBUG] Invalid form")
|
print("[DEBUG] Invalid form")
|
||||||
if form.barcode.data:
|
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:
|
else:
|
||||||
return redirect(url_for("scan"))
|
return redirect(url_for("scan"))
|
||||||
|
|
||||||
|
|||||||
25
models.py
25
models.py
@@ -3,6 +3,7 @@ from werkzeug.security import generate_password_hash, check_password_hash
|
|||||||
from application import db
|
from application import db
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from forms import FoodItemForm
|
from forms import FoodItemForm
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
|
|
||||||
class User(UserMixin, db.Model):
|
class User(UserMixin, db.Model):
|
||||||
@@ -12,7 +13,8 @@ class User(UserMixin, db.Model):
|
|||||||
password = db.Column(db.String, nullable=False)
|
password = db.Column(db.String, nullable=False)
|
||||||
is_admin = db.Column(db.Boolean, nullable=False, default=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__(
|
def __init__(
|
||||||
self, username: str, password: str, is_admin: bool = False
|
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)
|
fat_100 = db.Column(db.Float, nullable=False)
|
||||||
saturated_fat_100 = db.Column(db.Float)
|
saturated_fat_100 = db.Column(db.Float)
|
||||||
|
|
||||||
|
food_logs = db.relationship("FoodLog", backref="food_item", lazy="dynamic")
|
||||||
|
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.UniqueConstraint("barcode", "owner_id", name="barcode_owner_key"),
|
db.UniqueConstraint("barcode", "owner_id", name="barcode_owner_key"),
|
||||||
)
|
)
|
||||||
@@ -98,3 +102,22 @@ class FoodItem(db.Model):
|
|||||||
"fat_100": self.fat_100,
|
"fat_100": self.fat_100,
|
||||||
"saturated_fat_100": self.saturated_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
|
||||||
|
|||||||
5
seed.py
5
seed.py
@@ -1,5 +1,5 @@
|
|||||||
from application import db, app
|
from application import db, app
|
||||||
from models import User, FoodItem
|
from models import User, FoodItem, FoodLog
|
||||||
|
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
User.query.delete()
|
User.query.delete()
|
||||||
@@ -21,4 +21,7 @@ with app.app_context():
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
FoodLog.query.delete()
|
||||||
|
db.session.add(FoodLog(1, 1, 200))
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|||||||
Reference in New Issue
Block a user