Initial commit

This commit is contained in:
Ana Custura 2026-02-17 08:42:33 +00:00
commit c0b4ca1021
21 changed files with 677 additions and 0 deletions

35
app/models.py Normal file
View file

@ -0,0 +1,35 @@
from typing import Optional
import sqlalchemy as sa
import sqlalchemy.orm as so
from app import db
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin
from app import login
class User(UserMixin, db.Model):
id: so.Mapped[int] = so.mapped_column(primary_key=True)
username: so.Mapped[str] = so.mapped_column(sa.String(64), index=True,
unique=True)
password_hash: so.Mapped[Optional[str]] = so.mapped_column(sa.String(256))
def set_password(self, password: str) -> None:
self.password_hash = generate_password_hash(password)
def check_password(self, password: str) -> bool:
return check_password_hash(self.password_hash, password)
def __repr__(self):
return '<User {}>'.format(self.username)
class Setting(db.Model):
id: so.Mapped[int] = so.mapped_column(primary_key=True)
key: so.Mapped[str] = so.mapped_column(sa.String(255), index=True,
unique=True, nullable=False)
value: so.Mapped[str] = so.mapped_column(sa.String(255))
def __repr__(self):
return '<Setting {}>'.format(self.key)
@login.user_loader
def load_user(user_id: str) -> User:
return db.session.get(User, int(user_id))