Initial commit: Flask calorie counter app setup

Add base Flask application with user authentication, SQLAlchemy models for users, units, and food items, admin blueprint, and basic templates. Includes database migration setup, login form, and seed script for initial user creation.
This commit is contained in:
2025-06-26 14:19:09 +02:00
parent b9f2c420ef
commit b498f3693a
19 changed files with 531 additions and 0 deletions

45
models.py Normal file
View File

@@ -0,0 +1,45 @@
from flask_login import UserMixin # type: ignore
from werkzeug.security import generate_password_hash, check_password_hash
from application import db
class User(UserMixin, db.Model):
__tablename__ = "user"
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)
def __init__(self, username: str, password: str):
super().__init__()
self.username = username
self.password = generate_password_hash(password=password)
def check_password(self, password: str) -> bool:
return check_password_hash(pwhash=self.password, password=password)
def change_password(self, password: str) -> None:
self.password = generate_password_hash(password=password)
class Units(db.Model):
__tablename__ = "unit"
id = db.Column(db.Integer, primary_key=True)
symbol = db.Column(db.String(10), unique=True, nullable=False)
name = db.Column(db.String(50), unique=True, nullable=False)
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)