2
0
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:
Matthias 2021-11-14 22:08:57 +01:00
parent d586d6225c
commit 6922e24237
No known key found for this signature in database
GPG Key ID: F50EF5741D33E076

View File

@ -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