from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager from flask_migrate import Migrate import config db = SQLAlchemy() login_manager = LoginManager() migrate = Migrate() # Flask-Login configuration login_manager.login_view = 'auth.login' login_manager.login_message = 'Please log in to access this page.' def create_app(): app = Flask(__name__) app.config.from_object(config.Config) # Initialize extensions db.init_app(app) login_manager.init_app(app) migrate.init_app(app, db) # Initialize model classes with db instance from .models import init_db_models init_db_models(db) # Import model classes (stored on init_db_models function) User = init_db_models.User UserSettings = init_db_models.UserSettings DailyLog = init_db_models.DailyLog DailyLogItem = init_db_models.DailyLogItem # Flask-Login user loader (must be defined after User class exists) @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) # Register blueprints from . import routes app.register_blueprint(routes.bp) from . import auth app.register_blueprint(auth.auth_bp) return app