", methods=["GET", "POST"])
+def edit_food_item(id: int):
+ item = FoodItem.query.get(id)
if item:
- form = FoodItemForm()
- if form.validate_on_submit():
- item.updateFromForm(form=form)
- db.session.commit()
- return redirect(url_for("user.dashboard"))
- form.barcode.data = item.barcode
- form.name.data = item.name
- form.energy.data = item.energy_100
- form.protein.data = item.protein_100
- form.carbs.data = item.carbs_100
- form.sugar.data = item.sugar_100
- form.fat.data = item.fat_100
- form.saturated_fat.data = item.saturated_fat_100
- return render_template("edit_food_item.html", form=form)
- else:
+ if item.owner_id == current_user.id:
+ form = FoodItemForm()
+ if form.validate_on_submit():
+ item.updateFromForm(form=form)
+ db.session.commit()
+ return redirect(url_for("user.dashboard"))
+ form.barcode.data = item.barcode
+ form.name.data = item.name
+ form.energy.data = item.energy_100
+ form.protein.data = item.protein_100
+ form.carbs.data = item.carbs_100
+ form.sugar.data = item.sugar_100
+ form.fat.data = item.fat_100
+ form.saturated_fat.data = item.saturated_fat_100
+ return render_template("edit_food_item.html", form=form)
+ return redirect(url_for("user.dashboard"))
+
+
+@user_bp.route("/add_food_item_manual", methods=["GET", "POST"])
+def add_food_item_manual():
+ form = FoodItemForm()
+ for item in form:
+ print(item)
+ if form.validate_on_submit():
+ assert form.name.data is not None
+ assert form.energy.data is not None
+ assert form.protein.data is not None
+ assert form.carbs.data is not None
+ assert form.fat.data is not None
+ db.session.add(
+ FoodItem(
+ name=form.name.data,
+ owner_id=current_user.id,
+ energy=form.energy.data,
+ protein=form.protein.data,
+ carbs=form.carbs.data,
+ fat=form.fat.data,
+ barcode=form.barcode.data,
+ saturated_fat=form.saturated_fat.data,
+ sugar=form.sugar.data,
+ )
+ )
+ db.session.commit()
return redirect(url_for("user.dashboard"))
+ return render_template("add_food_item_manual.html", form=form)
diff --git a/application/user/templates/add_food_item_manual.html b/application/user/templates/add_food_item_manual.html
new file mode 100644
index 0000000..5f30c82
--- /dev/null
+++ b/application/user/templates/add_food_item_manual.html
@@ -0,0 +1,49 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+{% endblock%}
\ No newline at end of file
diff --git a/application/user/templates/dashboard.html b/application/user/templates/dashboard.html
index e644f6c..5c148cb 100644
--- a/application/user/templates/dashboard.html
+++ b/application/user/templates/dashboard.html
@@ -33,10 +33,10 @@ Food Nutritional Info
| {{ food.protein_100 }} |
-
-
diff --git a/application/templates/food_item.html b/application/user/templates/food_item.html
similarity index 100%
rename from application/templates/food_item.html
rename to application/user/templates/food_item.html
diff --git a/forms.py b/forms.py
index 9c25c5a..ba71960 100644
--- a/forms.py
+++ b/forms.py
@@ -6,7 +6,7 @@ from wtforms import (
IntegerField,
FloatField,
)
-from wtforms.validators import DataRequired, InputRequired
+from wtforms.validators import DataRequired, InputRequired, Optional
class LoginForm(FlaskForm):
@@ -16,12 +16,12 @@ class LoginForm(FlaskForm):
class FoodItemForm(FlaskForm):
- barcode = IntegerField("Barcode", validators=[InputRequired()])
+ barcode = IntegerField("Barcode", validators=[Optional()])
name = StringField("Product Name", validators=[DataRequired()])
energy = IntegerField("Energy per 100g", validators=[InputRequired()])
protein = FloatField("protein per 100g", validators=[InputRequired()])
carbs = FloatField("carbs per 100g", validators=[InputRequired()])
- sugar = FloatField("sugar per 100g")
+ sugar = FloatField("sugar per 100g", validators=[Optional()])
fat = FloatField("fat per 100g", validators=[InputRequired()])
saturated_fat = FloatField("saturated_fat per 100g")
submit = SubmitField("Add Item")
diff --git a/models.py b/models.py
index 4459e58..8870d3b 100644
--- a/models.py
+++ b/models.py
@@ -39,7 +39,7 @@ class Unit(db.Model):
class FoodItem(db.Model):
__tablename__ = "food_item"
id = db.Column(db.Integer, primary_key=True)
- barcode = db.Column(db.Integer, nullable=False)
+ barcode = db.Column(db.Integer)
owner_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
name = db.Column(db.String(150), nullable=False)
@@ -62,7 +62,7 @@ class FoodItem(db.Model):
protein: float,
carbs: float,
fat: float,
- barcode: int,
+ barcode: Optional[int] = None,
sugar: Optional[float] = None,
saturated_fat: Optional[float] = None,
):
|