Coverage for heritrace/__init__.py: 100%
32 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-11-26 11:33 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-11-26 11:33 +0000
1import logging
2import os
3import sys
5from flask import Flask
6from flask_babel import Babel
7from flask_login import LoginManager
8from redis import Redis
10from heritrace.cli import register_cli_commands
11from heritrace.utils.sparql_utils import precompute_available_classes_cache
13def create_app(config_object=None):
14 app = Flask(__name__)
16 if config_object:
17 app.config.from_object(config_object)
19 logging.basicConfig(
20 level=logging.INFO,
21 format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
22 )
23 app.logger.setLevel(logging.INFO)
25 register_cli_commands(app)
27 is_translate_command = 'translate' in sys.argv
29 if not is_translate_command:
30 babel = Babel()
31 login_manager = LoginManager()
33 redis_url = os.environ.get('REDIS_URL', 'redis://localhost:6379/0')
34 app.logger.info(f"Connecting to Redis at: {redis_url}")
35 redis_client = Redis.from_url(redis_url, decode_responses=True)
37 from heritrace.extensions import init_extensions
38 from heritrace.routes import register_blueprints
40 init_extensions(app, babel, login_manager, redis_client)
42 with app.app_context():
43 app.logger.info("[STARTUP] Pre-computing available classes cache...")
44 precompute_available_classes_cache()
45 app.logger.info("[STARTUP] Available classes cache computed successfully")
47 register_blueprints(app)
49 return app