from flask import Flask, render_template, request, redirect, flash from flask_login import login_required, login_user, logout_user, current_user from flask_assets import Bundle from flask_wtf import FlaskForm from wtforms import StringField from wtforms.validators import DataRequired from website.models import Users from website.extensions import db, migrate, login_manager, assets from website.config import INSTANCE_DIR, MIGRATION_DIR class LoginForm(FlaskForm): uuid = StringField( "uuid", validators=[DataRequired()], render_kw={"placeholder": "12345678-ABCD-ABCD-ABCD-123456789EFG"}, ) app = Flask(__name__, instance_path=INSTANCE_DIR) app.config.from_pyfile("config.py") db.init_app(app) migrate.init_app(app, db, directory=MIGRATION_DIR) with app.app_context(): db.create_all() assets.init_app(app) styles = Bundle( "sass/styles.sass", filters="libsass, cssmin", output="gen/packed.css", depends="sass/*.sass", ) assets.register("styles", styles) scripts = Bundle("js/*.js", filters="jsmin", output="gen/packed.js") assets.register("scripts", scripts) @login_manager.user_loader def load_user(user_id): return Users.get(user_id) @app.route("/") def index(): return render_template("index.html") @app.route("/login", methods=["GET", "POST"]) def login(): form = LoginForm() if form.validate_on_submit(): if user := Users.query.filter_by(uuid=str(form.uuid)).first(): login_user(user, remember=True) return redirect(index) else: flash("Inncorrect login") return render_template("login.html", form=form)