from flask import Flask from flask_login import LoginManager, UserMixin from flask_sqlalchemy import SQLAlchemy from flask_talisman import Talisman from get_mysql import get_mysql import atexit from flask_apscheduler import APScheduler def create(): """ Erstellt die Flask-App inkl. Datenbank und Login-Manager. :return app: """ app = Flask(__name__) dbpw = get_mysql()[1] dbun = get_mysql()[0] app.config['SECRET_KEY'] = 'SECRET_KEY_GOES_HERE' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://' + dbun + ':' + dbpw + '@localhost/paulmrtn_DUALHUB' db.init_app(app) login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = "login" # Shut down the scheduler when exiting the app atexit.register(lambda: scheduler.shutdown()) @login_manager.user_loader def load_user(uid: int): return User.query.filter_by(id=uid).first() return app db = SQLAlchemy() class User(UserMixin, db.Model): """ Datenbank-Modell für User. """ id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) name = db.Column(db.String(255)) kurs = db.Column(db.String(15)) class Dualis(db.Model): """ Datenbank-Modell für Dualis. """ token = db.Column(db.String(255), unique=True) uid = db.Column(db.Integer, primary_key=True) token_created = db.Column(db.Integer) result_list = db.Column(db.String(15)) class Meals(db.Model): """ Datenbank-Modell für Meals. """ id = db.Column(db.Integer, primary_key=True) date = db.Column(db.Date) name = db.Column(db.String(100)) vegetarian = db.Column(db.Boolean) vegan = db.Column(db.Boolean) schwein = db.Column(db.Boolean) scheduler = APScheduler() app = create() def_src = ["*.paulmartin.cloud", '\'self\''] Talisman(app, content_security_policy={"default-src": def_src, "script-src": def_src # + ["'unsafe-inline'"] }) scheduler.init_app(app) scheduler.start() scheduler.api_enabled = True