mirror of
https://github.com/StefBuwalda/cal_counter.git
synced 2025-10-29 10:50:00 +00:00
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.
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
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)
|