From d5e8c3fa947031301a554ec946d8be2e6364adb3 Mon Sep 17 00:00:00 2001 From: Stef Date: Sat, 28 Jun 2025 12:53:27 +0200 Subject: [PATCH] Refactor food item model and add barcode scanner page Renamed FoodItems to FoodItem and Units to Unit in models.py, updated related imports and usage throughout the codebase. Added a barcode scanner test page using ZXing in the admin section. Improved food_items.html to display nutritional information in a table. Registered the admin blueprint in app.py and cleaned up blueprint registration in __init__.py. Updated seed.py to use the new FoodItem model. --- app.py | 5 ++ application/__init__.py | 4 -- application/admin/routes.py | 9 ++- application/admin/templates/barcode_test.html | 55 +++++++++++++++++++ application/admin/templates/food_items.html | 37 ++++++++++++- application/templates/base.html | 2 +- models.py | 35 +++++++++--- seed.py | 17 +++++- 8 files changed, 145 insertions(+), 19 deletions(-) create mode 100644 application/admin/templates/barcode_test.html diff --git a/app.py b/app.py index 77c5c4d..25efcea 100644 --- a/app.py +++ b/app.py @@ -8,6 +8,7 @@ from flask_login import ( from forms import LoginForm from models import User from application import db, app, login_manager +from application.admin.routes import admin_bp # Config app.config["SECRET_KEY"] = "Iman" @@ -20,6 +21,10 @@ def load_user(user_id: int): return db.session.get(User, user_id) +# Register blueprints +app.register_blueprint(admin_bp) + + # Routes diff --git a/application/__init__.py b/application/__init__.py index 5c935b1..90983c7 100644 --- a/application/__init__.py +++ b/application/__init__.py @@ -2,7 +2,6 @@ from flask import Flask from flask_login import LoginManager # type: ignore from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate -from application.admin.routes import admin_bp app = Flask(__name__) # Init Flask app @@ -13,6 +12,3 @@ db = SQLAlchemy(app=app) # Init SQLAlchemy migrate = Migrate(app=app, db=db) # Init Migration login_manager = LoginManager(app=app) # Init login manager - -# Register blueprints -app.register_blueprint(admin_bp) diff --git a/application/admin/routes.py b/application/admin/routes.py index c5509fd..8b0a855 100644 --- a/application/admin/routes.py +++ b/application/admin/routes.py @@ -1,6 +1,6 @@ from flask import Blueprint, render_template, abort from flask_login import current_user -from models import FoodItems +from models import FoodItem admin_bp = Blueprint( "admin", @@ -18,5 +18,10 @@ def admin_required(): @admin_bp.route("/food_items", methods=["GET"]) def food_items(): - items = FoodItems.query.all() + items = FoodItem.query.all() return render_template("food_items.html", items=items) + + +@admin_bp.route("/barcode_test", methods=["GET"]) +def barcode_test(): + return render_template("barcode_test.html") diff --git a/application/admin/templates/barcode_test.html b/application/admin/templates/barcode_test.html new file mode 100644 index 0000000..63353f2 --- /dev/null +++ b/application/admin/templates/barcode_test.html @@ -0,0 +1,55 @@ +{% extends "base.html" %} +{% block title %} +ZXing Barcode Scanner +{% endblock %} + +{% block content %} +
+

📷 ZXing Barcode Scanner

+ +
+ +
+ +
+ + +
+ +
+
Result:
+

+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/application/admin/templates/food_items.html b/application/admin/templates/food_items.html index 9f7f311..852e825 100644 --- a/application/admin/templates/food_items.html +++ b/application/admin/templates/food_items.html @@ -1,5 +1,40 @@ {% extends "base.html" %} +{% block title %} +Food Nutritional Info +{% endblock %} + {% block content %} -Hallo +
+

Food Nutritional Information (per 100g)

+
+ + + + + + + + + + + + + + {% for food in items %} + + + + + + + + + + {% endfor %} + +
NameEnergy (kcal)Fats (g)Saturated Fats (g)Sugars (g)Carbs (g)Protein (g)
{{ food.name }}{{ food.energy_100g }}{{ food.fats_100g }}{{ food.saturated_fats_100g }}{{ food.sugar_100g }}{{ food.carbs_100g }}{{ food.protein_100g }}
+
+
+ {% endblock%} \ No newline at end of file diff --git a/application/templates/base.html b/application/templates/base.html index 9a786f7..b4cecc9 100644 --- a/application/templates/base.html +++ b/application/templates/base.html @@ -10,7 +10,7 @@ - +