from flask import Flask from app.extensions import db, migrate, login_manager, mail from config import config import os def create_app(config_name=None): app = Flask(__name__) config_name = config_name or os.environ.get('FLASK_CONFIG') or 'default' app.config.from_object(config[config_name]) # Initialize extensions db.init_app(app) migrate.init_app(app, db) login_manager.init_app(app) mail.init_app(app) # Configure login manager login_manager.login_view = 'auth.login' login_manager.login_message = 'Please log in to access this page.' login_manager.login_message_category = 'info' @login_manager.user_loader def load_user(user_id): from app.models import User return User.query.get(int(user_id)) # Import models from app.models import User, Post, PostImage, GPXFile, Comment, Like # Register blueprints from app.routes.main import main app.register_blueprint(main) from app.routes.auth import auth app.register_blueprint(auth, url_prefix='/auth') from app.routes.community import community app.register_blueprint(community, url_prefix='/community') # Create upload directories upload_dir = os.path.join(app.instance_path, 'uploads') os.makedirs(upload_dir, exist_ok=True) os.makedirs(os.path.join(upload_dir, 'images'), exist_ok=True) os.makedirs(os.path.join(upload_dir, 'gpx'), exist_ok=True) return app