mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-01 13:06:45 +00:00
refactor and doc
This commit is contained in:
parent
d586d6225c
commit
6922e24237
@ -26,22 +26,24 @@ class PluginAppConfig(AppConfig):
|
|||||||
name = 'plugin'
|
name = 'plugin'
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
self.collect_plugins()
|
self._collect_plugins()
|
||||||
self.load_plugins()
|
self.load_plugins()
|
||||||
|
|
||||||
# region general public plugin functions
|
# region public plugin functions
|
||||||
def load_plugins(self):
|
def load_plugins(self):
|
||||||
|
"""load and activate all IntegrationPlugins"""
|
||||||
logger.info('Start loading plugins')
|
logger.info('Start loading plugins')
|
||||||
try:
|
try:
|
||||||
# we are using the db so for migrations etc we need to try this block
|
# we are using the db so for migrations etc we need to try this block
|
||||||
self.init_plugins()
|
self._init_plugins()
|
||||||
self.activate_plugins()
|
self._activate_plugins()
|
||||||
except (OperationalError, ProgrammingError):
|
except (OperationalError, ProgrammingError):
|
||||||
# Exception if the database has not been migrated yet
|
# Exception if the database has not been migrated yet
|
||||||
logger.info('Database not accessible while loading plugins')
|
logger.info('Database not accessible while loading plugins')
|
||||||
logger.info('Finished loading plugins')
|
logger.info('Finished loading plugins')
|
||||||
|
|
||||||
def unload_plugins(self):
|
def unload_plugins(self):
|
||||||
|
"""unload and deactivate all IntegrationPlugins"""
|
||||||
logger.info('Start unloading plugins')
|
logger.info('Start unloading plugins')
|
||||||
# remove all plugins from registry
|
# remove all plugins from registry
|
||||||
# plugins = settings.INTEGRATION_PLUGINS
|
# plugins = settings.INTEGRATION_PLUGINS
|
||||||
@ -50,18 +52,19 @@ class PluginAppConfig(AppConfig):
|
|||||||
settings.INTEGRATION_PLUGINS_INACTIVE = {}
|
settings.INTEGRATION_PLUGINS_INACTIVE = {}
|
||||||
|
|
||||||
# deactivate all integrations
|
# deactivate all integrations
|
||||||
self.deactivate_plugins()
|
self._deactivate_plugins()
|
||||||
logger.info('Finished unloading plugins')
|
logger.info('Finished unloading plugins')
|
||||||
|
|
||||||
def reload_plugins(self):
|
def reload_plugins(self):
|
||||||
|
"""safely reload IntegrationPlugins"""
|
||||||
logger.info('Start reloading plugins')
|
logger.info('Start reloading plugins')
|
||||||
self.unload_plugins()
|
self.unload_plugins()
|
||||||
self.load_plugins()
|
self.load_plugins()
|
||||||
logger.info('Finished reloading plugins')
|
logger.info('Finished reloading plugins')
|
||||||
# endregion
|
# endregion
|
||||||
|
|
||||||
# region general mechanisms
|
# region general plugin managment mechanisms
|
||||||
def collect_plugins(self):
|
def _collect_plugins(self):
|
||||||
"""collect integration plugins from all possible ways of loading"""
|
"""collect integration plugins from all possible ways of loading"""
|
||||||
# Collect plugins from paths
|
# Collect plugins from paths
|
||||||
for plugin in settings.PLUGIN_DIRS:
|
for plugin in settings.PLUGIN_DIRS:
|
||||||
@ -81,7 +84,7 @@ class PluginAppConfig(AppConfig):
|
|||||||
logger.info(f'Found {len(settings.PLUGINS)} plugins!')
|
logger.info(f'Found {len(settings.PLUGINS)} plugins!')
|
||||||
logger.info(", ".join([a.__module__ for a in settings.PLUGINS]))
|
logger.info(", ".join([a.__module__ for a in settings.PLUGINS]))
|
||||||
|
|
||||||
def init_plugins(self):
|
def _init_plugins(self):
|
||||||
"""initialise all found plugins"""
|
"""initialise all found plugins"""
|
||||||
from plugin.models import PluginConfig
|
from plugin.models import PluginConfig
|
||||||
|
|
||||||
@ -121,23 +124,22 @@ class PluginAppConfig(AppConfig):
|
|||||||
# save for later reference
|
# save for later reference
|
||||||
settings.INTEGRATION_PLUGINS_INACTIVE[plug_key] = plugin_db_setting
|
settings.INTEGRATION_PLUGINS_INACTIVE[plug_key] = plugin_db_setting
|
||||||
|
|
||||||
def activate_plugins(self):
|
def _activate_plugins(self):
|
||||||
"""fullfill integrations for all activated plugins"""
|
"""run integration functions for all plugins"""
|
||||||
# activate integrations
|
# activate integrations
|
||||||
plugins = settings.INTEGRATION_PLUGINS.items()
|
plugins = settings.INTEGRATION_PLUGINS.items()
|
||||||
logger.info(f'Found {len(plugins)} active plugins')
|
logger.info(f'Found {len(plugins)} active plugins')
|
||||||
|
|
||||||
# if plugin settings are enabled enhance the settings
|
|
||||||
self.activate_integration_globalsettings(plugins)
|
self.activate_integration_globalsettings(plugins)
|
||||||
|
|
||||||
# if plugin apps are enabled
|
|
||||||
self.activate_integration_app(plugins)
|
self.activate_integration_app(plugins)
|
||||||
|
|
||||||
def deactivate_plugins(self):
|
def _deactivate_plugins(self):
|
||||||
|
"""run integration deactivation functions for all plugins"""
|
||||||
self.deactivate_integration_app()
|
self.deactivate_integration_app()
|
||||||
self.deactivate_integration_globalsettings()
|
self.deactivate_integration_globalsettings()
|
||||||
# endregion
|
# endregion
|
||||||
|
|
||||||
|
# region specific integrations
|
||||||
# region integration_globalsettings
|
# region integration_globalsettings
|
||||||
def activate_integration_globalsettings(self, plugins):
|
def activate_integration_globalsettings(self, plugins):
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
@ -225,3 +227,4 @@ class PluginAppConfig(AppConfig):
|
|||||||
apps.clear_cache()
|
apps.clear_cache()
|
||||||
apps.populate(settings.INSTALLED_APPS)
|
apps.populate(settings.INSTALLED_APPS)
|
||||||
# endregion
|
# endregion
|
||||||
|
# endregion
|
||||||
|
Loading…
x
Reference in New Issue
Block a user