from flask import Flask from dotenv import load_dotenv import os import urllib.parse from app.controllers.auth_controller import auth from app.models import db from flask_login import LoginManager from app.models.users import User from app.routes import main as main_blueprint load_dotenv() def create_app(): app = Flask(__name__, template_folder='views') app.config['SECRET_KEY'] = os.getenv('SECRET_KEY') db_username = os.getenv('DB_USERNAME') db_password = urllib.parse.quote_plus(os.getenv('DB_PASSWORD')) db_host = os.getenv('DB_HOST') db_port = os.getenv('DB_PORT') db_name = os.getenv('DB_NAME') db_url = f"mysql://{db_username}:{db_password}@{db_host}:{db_port}/{db_name}" app.config['SQLALCHEMY_DATABASE_URI'] = db_url db.init_app(app) login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_loader def load_user(id): return User.query.get(int(id)) app.register_blueprint(auth) app.register_blueprint(main_blueprint) return app