Coverage for heritrace / __init__.py: 100%

32 statements  

« 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 

4 

5import logging 

6import os 

7import sys 

8 

9from flask import Flask 

10from flask_babel import Babel 

11from flask_login import LoginManager 

12from redis import Redis 

13 

14from heritrace.cli import register_cli_commands 

15from heritrace.utils.sparql_utils import precompute_available_classes_cache 

16 

17def create_app(config_object=None): 

18 app = Flask(__name__) 

19 

20 if config_object: 

21 app.config.from_object(config_object) 

22 

23 logging.basicConfig( 

24 level=logging.INFO, 

25 format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", 

26 ) 

27 app.logger.setLevel(logging.INFO) 

28 

29 register_cli_commands(app) 

30 

31 is_translate_command = 'translate' in sys.argv 

32 

33 if not is_translate_command: 

34 babel = Babel() 

35 login_manager = LoginManager() 

36 

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) 

40 

41 from heritrace.extensions import init_extensions 

42 from heritrace.routes import register_blueprints 

43 

44 init_extensions(app, babel, login_manager, redis_client) 

45 

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") 

50 

51 register_blueprints(app) 

52 

53 return app