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

Ref: 52af196694
This commit is contained in:
Oliver 2022-10-09 09:07:51 +11:00 committed by GitHub
parent 67740581fe
commit c146256170
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View File

@ -13,7 +13,7 @@ def isImportingData():
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.
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',
'loaddata',
'dumpdata',
'makemigrations',
'migrate',
'check',
'shell',
'createsuperuser',
@ -43,6 +41,12 @@ def canAppAccessDatabase(allow_test=False):
# Override for testing mode?
excluded_commands.append('test')
if not allow_plugins:
excluded_commands.extend([
'makemigrations',
'migrate',
])
for cmd in excluded_commands:
if cmd in sys.argv:
return False

View File

@ -27,7 +27,7 @@ class PluginAppConfig(AppConfig):
def ready(self):
"""The ready method is extended to initialize plugins."""
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
else:
logger.info('Loading InvenTree plugins')