Coverage for src/backend/InvenTree/machine/apps.py: 88%

21 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 17:47 +0000

1"""Django machine app config.""" 

2 

3from django.apps import AppConfig 

4from django.db.utils import OperationalError, ProgrammingError 

5 

6import structlog 

7 

8from InvenTree.ready import ( 

9 canAppAccessDatabase, 

10 ignore_ready_warning, 

11 isImportingData, 

12 isInMainThread, 

13 isPluginRegistryLoaded, 

14 isRunningMigrations, 

15) 

16 

17logger = structlog.get_logger('inventree') 

18 

19 

20class MachineConfig(AppConfig): 

21 """AppConfig class for the machine app.""" 

22 

23 name = 'machine' 

24 

25 def ready(self) -> None: 

26 """Initialization method for the machine app.""" 

27 if ( 

28 not canAppAccessDatabase(allow_test=True) 

29 or not isPluginRegistryLoaded() 

30 or isRunningMigrations() 

31 or isImportingData() 

32 ): 

33 logger.debug('Machine app: Skipping machine loading sequence') 

34 return 

35 

36 try: 

37 self.initialize_registry() 

38 except (OperationalError, ProgrammingError): 

39 # Database might not yet be ready 

40 logger.warn('Database was not ready for initializing machines') 

41 

42 @ignore_ready_warning 

43 def initialize_registry(self): 

44 """Initialize the machine registry.""" 

45 from machine import registry 

46 

47 if not registry.is_ready: 47 ↛ exitline 47 didn't return from function 'initialize_registry' because the condition on line 47 was always true

48 logger.info('Loading InvenTree machines') 

49 registry.initialize(main=isInMainThread())