Allow auto-loading of plugins in certain conditions (#3762)

Ref: https://github.com/matmair/InvenTree/commit/52af1966941ce564bae485988c40b8161d6f201e
This commit is contained in:
Oliver authored and GitHub committed 2022-10-09 09:07:51 +11:00
1 parent 67740581fe
commit c146256170
2 files changed
+8 -4

No files matched your search

+7 -3
View File
@@ -13,7 +13,7 @@ def isImportingData():
return 'loaddata' in sys.argv return 'loaddata' in sys.argv
def canAppAccessDatabase(allow_test=False): def canAppAccessDatabase(allow_test: bool = False, allow_plugins: bool = False):
"""Returns True if the apps.py file can access database records. """Returns True if the apps.py file can access database records.
There are some circumstances where we don't want the ready function in apps.py There are some circumstances where we don't want the ready function in apps.py
@@ -25,8 +25,6 @@ def canAppAccessDatabase(allow_test=False):
'flush', 'flush',
'loaddata', 'loaddata',
'dumpdata', 'dumpdata',
'makemigrations',
'migrate',
'check', 'check',
'shell', 'shell',
'createsuperuser', 'createsuperuser',
@@ -43,6 +41,12 @@ def canAppAccessDatabase(allow_test=False):
# Override for testing mode? # Override for testing mode?
excluded_commands.append('test') excluded_commands.append('test')
if not allow_plugins:
excluded_commands.extend([
'makemigrations',
'migrate',
])
for cmd in excluded_commands: for cmd in excluded_commands:
if cmd in sys.argv: if cmd in sys.argv:
return False return False
+1 -1
View File
@@ -27,7 +27,7 @@ class PluginAppConfig(AppConfig):
def ready(self): def ready(self):
"""The ready method is extended to initialize plugins.""" """The ready method is extended to initialize plugins."""
if settings.PLUGINS_ENABLED: if settings.PLUGINS_ENABLED:
if not canAppAccessDatabase(allow_test=True): if not canAppAccessDatabase(allow_test=True, allow_plugins=True):
logger.info("Skipping plugin loading sequence") # pragma: no cover logger.info("Skipping plugin loading sequence") # pragma: no cover
else: else:
logger.info('Loading InvenTree plugins') logger.info('Loading InvenTree plugins')