Coverage for heritrace/__init__.py: 100%

32 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-11-26 11:33 +0000

1import logging 

2import os 

3import sys 

4 

5from flask import Flask 

6from flask_babel import Babel 

7from flask_login import LoginManager 

8from redis import Redis 

9 

10from heritrace.cli import register_cli_commands 

11from heritrace.utils.sparql_utils import precompute_available_classes_cache 

12 

13def create_app(config_object=None): 

14 app = Flask(__name__) 

15 

16 if config_object: 

17 app.config.from_object(config_object) 

18 

19 logging.basicConfig( 

20 level=logging.INFO, 

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

22 ) 

23 app.logger.setLevel(logging.INFO) 

24 

25 register_cli_commands(app) 

26 

27 is_translate_command = 'translate' in sys.argv 

28 

29 if not is_translate_command: 

30 babel = Babel() 

31 login_manager = LoginManager() 

32 

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) 

36 

37 from heritrace.extensions import init_extensions 

38 from heritrace.routes import register_blueprints 

39 

40 init_extensions(app, babel, login_manager, redis_client) 

41 

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

46 

47 register_blueprints(app) 

48 

49 return app