diff --git a/app.py b/app.py index 42647d0..397522f 100644 --- a/app.py +++ b/app.py @@ -1,12 +1,12 @@ -from flask import render_template, redirect, url_for, request, jsonify +from flask import render_template, redirect, url_for, request from flask_login import ( login_required, logout_user, login_user, current_user, ) -from forms import LoginForm, FoodItemForm -from models import User, FoodItem +from forms import LoginForm +from models import User from application import db, app, login_manager from application.admin.routes import admin_bp from application.user.routes import user_bp @@ -78,67 +78,6 @@ def scan(): return render_template("scan.html") -@app.route("/nutri/", methods=["GET"]) -@login_required -def nutri(barcode): - food = FoodItem.query.filter_by(barcode=barcode).first() - if food: - return jsonify(food.to_dict()) - else: - return jsonify({}) - - -@app.route("/food_item/", methods=["GET"]) -@login_required -def food_item(barcode): - food = FoodItem.query.filter_by(barcode=barcode).first() - if food: - return render_template("food_item.html", item=food) - else: - return render_template( - "add_food_item.html", - barcode=barcode, - form=FoodItemForm(barcode=barcode), - ) - - -@app.route("/add_food_item", methods=["POST"]) -@login_required -def add_food_item(): - form = FoodItemForm() - - if form.validate_on_submit(): - print("[DEBUG] Valid form") - if FoodItem.query.filter_by(barcode=form.barcode.data).first() is None: - 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() - print("[DEBUG] New item added") - return redirect(url_for("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)) - else: - return redirect(url_for("scan")) - - # Run if __name__ == "__main__": diff --git a/application/templates/scan.html b/application/templates/scan.html index 023c84f..2e24c03 100644 --- a/application/templates/scan.html +++ b/application/templates/scan.html @@ -45,7 +45,7 @@ await codeReader.decodeFromVideoDevice(selectedDeviceId, videoElement, async (result, err) => { if (result) { const codeText = result.getText(); - const baseURL = "{{url_for('food_item', barcode='0')}}" + const baseURL = "{{url_for('user.food_item', barcode='0')}}" window.location.href = baseURL.replace("0", encodeURIComponent(codeText)) } }); diff --git a/application/user/routes.py b/application/user/routes.py index 4ae9b98..db2c2f8 100644 --- a/application/user/routes.py +++ b/application/user/routes.py @@ -49,6 +49,42 @@ fields = [ ] +@user_bp.route("/add_food_item", methods=["POST"]) +def add_food_item(): + form = FoodItemForm() + + if form.validate_on_submit(): + print("[DEBUG] Valid form") + if FoodItem.query.filter_by(barcode=form.barcode.data).first() is None: + 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() + print("[DEBUG] New item added") + return redirect(url_for("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)) + else: + return redirect(url_for("scan")) + + @user_bp.route("/edit_food_item/", methods=["GET", "POST"]) def edit_food_item(id: int): item = FoodItem.query.get(id) @@ -71,6 +107,19 @@ def edit_food_item(id: int): return redirect(url_for("user.dashboard")) +@user_bp.route("/food_item/", methods=["GET"]) +def food_item(barcode): + food = FoodItem.query.filter_by(barcode=barcode).first() + if food: + return render_template("food_item.html", item=food) + else: + return render_template( + "add_food_item.html", + barcode=barcode, + form=FoodItemForm(barcode=barcode), + ) + + @user_bp.route("/add_food_item_manual", methods=["GET", "POST"]) def add_food_item_manual(): form = FoodItemForm() diff --git a/application/user/templates/add_food_item.html b/application/user/templates/add_food_item.html index 8439fdb..e167d55 100644 --- a/application/user/templates/add_food_item.html +++ b/application/user/templates/add_food_item.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block content %} -
+ {{ form.hidden_tag() }}