Coverage for heritrace / __init__.py: 100%
32 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-07-02 10:16 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-07-02 10:16 +0000
1# SPDX-FileCopyrightText: 2024-2025 Arcangelo Massari <arcangelo.massari@unibo.it>
2#
3# SPDX-License-Identifier: ISC
5import logging
6import os
7import sys
9from flask import Flask
10from flask_babel import Babel
11from flask_login import LoginManager
12from redis import Redis
14from heritrace.cli import register_cli_commands
15from heritrace.extensions import init_extensions
16from heritrace.routes import register_blueprints
17from heritrace.utils.sparql_utils import get_available_classes
20def create_app(config_object: object = None) -> Flask:
21 app = Flask(__name__)
23 if config_object:
24 app.config.from_object(config_object)
26 logging.basicConfig(
27 level=logging.INFO,
28 format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
29 )
30 app.logger.setLevel(logging.INFO)
32 register_cli_commands(app)
34 is_translate_command = "translate" in sys.argv
36 if not is_translate_command:
37 babel = Babel()
38 login_manager = LoginManager()
40 redis_url = (
41 app.config.get("REDIS_URL")
42 or os.environ.get("REDIS_URL")
43 or "redis://localhost:6379/0"
44 )
45 app.logger.info("Connecting to Redis at: %s", redis_url)
46 redis_client = Redis.from_url(redis_url, decode_responses=True)
48 with app.app_context():
49 init_extensions(app, babel, login_manager, redis_client)
51 app.logger.info("[STARTUP] Pre-computing available classes cache...")
52 get_available_classes()
53 app.logger.info("[STARTUP] Available classes cache computed successfully")
55 register_blueprints(app)
57 return app