from flask import Flask from config import Config from .cli import register_cli_commands from .errors import register_error_handlers from .extensions import db, login_manager from .routes import register_routes from .utils import asset_url, init_version, init_database_with_retry def create_app(): app = Flask( __name__, template_folder="templates", static_folder="static", static_url_path="/static", ) app.config.from_object(Config) db.init_app(app) login_manager.init_app(app) login_manager.login_view = "zaloguj" init_version(app) @app.context_processor def inject_asset_helpers(): return {"asset_url": asset_url} @app.before_request def ensure_db_ready_before_request(): if app.extensions.get("database_ready") is True: return None init_database_with_retry(app, max_attempts=1, delay=0, raise_on_failure=False) return None register_routes(app) register_error_handlers(app) register_cli_commands(app) return app