GameExpo23/DV8-Expo/website/__init__.py
2023-05-16 18:01:59 +03:00

61 lines
1.6 KiB
Python

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)