44 lines
1.0 KiB
Python
44 lines
1.0 KiB
Python
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
|