mirror of
https://github.com/StefBuwalda/cal_counter.git
synced 2025-10-30 11:19:59 +00:00
Move food item routes to user blueprint
Refactored food item related routes from app.py to application/user/routes.py under the user blueprint. Updated template and JS references to use the blueprint route names, improving code organization and modularity.
This commit is contained in:
67
app.py
67
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 (
|
from flask_login import (
|
||||||
login_required,
|
login_required,
|
||||||
logout_user,
|
logout_user,
|
||||||
login_user,
|
login_user,
|
||||||
current_user,
|
current_user,
|
||||||
)
|
)
|
||||||
from forms import LoginForm, FoodItemForm
|
from forms import LoginForm
|
||||||
from models import User, FoodItem
|
from models import User
|
||||||
from application import db, app, login_manager
|
from application import db, app, login_manager
|
||||||
from application.admin.routes import admin_bp
|
from application.admin.routes import admin_bp
|
||||||
from application.user.routes import user_bp
|
from application.user.routes import user_bp
|
||||||
@@ -78,67 +78,6 @@ def scan():
|
|||||||
return render_template("scan.html")
|
return render_template("scan.html")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/nutri/<int:barcode>", 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/<int:barcode>", 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
|
# Run
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
await codeReader.decodeFromVideoDevice(selectedDeviceId, videoElement, async (result, err) => {
|
await codeReader.decodeFromVideoDevice(selectedDeviceId, videoElement, async (result, err) => {
|
||||||
if (result) {
|
if (result) {
|
||||||
const codeText = result.getText();
|
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))
|
window.location.href = baseURL.replace("0", encodeURIComponent(codeText))
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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/<int:id>", methods=["GET", "POST"])
|
@user_bp.route("/edit_food_item/<int:id>", methods=["GET", "POST"])
|
||||||
def edit_food_item(id: int):
|
def edit_food_item(id: int):
|
||||||
item = FoodItem.query.get(id)
|
item = FoodItem.query.get(id)
|
||||||
@@ -71,6 +107,19 @@ def edit_food_item(id: int):
|
|||||||
return redirect(url_for("user.dashboard"))
|
return redirect(url_for("user.dashboard"))
|
||||||
|
|
||||||
|
|
||||||
|
@user_bp.route("/food_item/<int:barcode>", 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"])
|
@user_bp.route("/add_food_item_manual", methods=["GET", "POST"])
|
||||||
def add_food_item_manual():
|
def add_food_item_manual():
|
||||||
form = FoodItemForm()
|
form = FoodItemForm()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form method="POST" action="{{ url_for('add_food_item') }}">
|
<form method="POST" action="{{ url_for('user.add_food_item') }}">
|
||||||
{{ form.hidden_tag() }}
|
{{ form.hidden_tag() }}
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
|
|||||||
Reference in New Issue
Block a user