Coverage for heritrace / __init__.py: 100%
32 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-21 12:56 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-21 12:56 +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.utils.sparql_utils import precompute_available_classes_cache
17def create_app(config_object=None):
18 app = Flask(__name__)
20 if config_object:
21 app.config.from_object(config_object)
23 logging.basicConfig(
24 level=logging.INFO,
25 format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
26 )
27 app.logger.setLevel(logging.INFO)
29 register_cli_commands(app)
31 is_translate_command = 'translate' in sys.argv
33 if not is_translate_command:
34 babel = Babel()
35 login_manager = LoginManager()
37 redis_url = os.environ.get('REDIS_URL', 'redis://localhost:6379/0')
38 app.logger.info(f"Connecting to Redis at: {redis_url}")
39 redis_client = Redis.from_url(redis_url, decode_responses=True)
41 from heritrace.extensions import init_extensions
42 from heritrace.routes import register_blueprints
44 init_extensions(app, babel, login_manager, redis_client)
46 with app.app_context():
47 app.logger.info("[STARTUP] Pre-computing available classes cache...")
48 precompute_available_classes_cache()
49 app.logger.info("[STARTUP] Available classes cache computed successfully")
51 register_blueprints(app)
53 return app