diff --git a/application/admin/routes.py b/application/admin/routes.py index ea4fb56..c5509fd 100644 --- a/application/admin/routes.py +++ b/application/admin/routes.py @@ -1,4 +1,6 @@ -from flask import Blueprint, render_template +from flask import Blueprint, render_template, abort +from flask_login import current_user +from models import FoodItems admin_bp = Blueprint( "admin", @@ -8,6 +10,13 @@ admin_bp = Blueprint( ) +@admin_bp.before_request +def admin_required(): + if not current_user.is_admin: + abort(403) + + @admin_bp.route("/food_items", methods=["GET"]) def food_items(): - return render_template("food_items.html") + items = FoodItems.query.all() + return render_template("food_items.html", items=items) diff --git a/models.py b/models.py index 47fba6b..de819ee 100644 --- a/models.py +++ b/models.py @@ -8,11 +8,15 @@ class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(150), unique=True, nullable=False) password = db.Column(db.String, nullable=False) + is_admin = db.Column(db.Boolean, nullable=False, default=False) - def __init__(self, username: str, password: str): + def __init__( + self, username: str, password: str, is_admin: bool = False + ) -> None: super().__init__() self.username = username self.password = generate_password_hash(password=password) + self.is_admin = is_admin def check_password(self, password: str) -> bool: return check_password_hash(pwhash=self.password, password=password) @@ -32,14 +36,10 @@ class FoodItems(db.Model): __tablename__ = "food_item" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(150), unique=True, nullable=False) - amount = db.Column(db.Integer, nullable=False) - unit_id = db.Column(db.Integer, db.ForeignKey("unit.id"), nullable=False) - unit = db.relationship("Units") - - energy = db.Column(db.Float) - protein = db.Column(db.Float) - carbs = db.Column(db.Float) - sugar = db.Column(db.Float) - fats = db.Column(db.Float) - saturated_fats = db.Column(db.Float) + energy_100g = db.Column(db.Float) + protein_100g = db.Column(db.Float) + carbs_100g = db.Column(db.Float) + sugar_100g = db.Column(db.Float) + fats_100g = db.Column(db.Float) + saturated_fats_100g = db.Column(db.Float) diff --git a/seed.py b/seed.py index 963b42e..25fd9d1 100644 --- a/seed.py +++ b/seed.py @@ -1,7 +1,11 @@ from application import db, app -from models import User +from models import User, FoodItems with app.app_context(): User.query.delete() - db.session.add(User("admin", "admin")) + db.session.add(User(username="admin", password="admin", is_admin=True)) + db.session.add(User(username="user", password="user", is_admin=False)) + + + db.session.commit()