mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
move settings to registry
This commit is contained in:
parent
8ac41970ad
commit
3aa40ce3e9
@ -882,8 +882,6 @@ if DEBUG or TESTING:
|
||||
PLUGIN_DIRS.append('plugin.samples')
|
||||
|
||||
PLUGINS = []
|
||||
INTEGRATION_PLUGINS = {}
|
||||
INTEGRATION_PLUGINS_INACTIVE = {}
|
||||
INTEGRATION_PLUGIN_GLOBALSETTING = {}
|
||||
|
||||
INTEGRATION_APPS_LOADING = True # Marks if apps were reloaded yet
|
||||
|
@ -1,7 +1,7 @@
|
||||
from .registry import plugins
|
||||
from .registry import plugins as plugin_reg
|
||||
from .integration import IntegrationPluginBase
|
||||
from .action import ActionPlugin
|
||||
|
||||
__all__ = [
|
||||
'plugins', 'IntegrationPluginBase', 'ActionPlugin',
|
||||
'plugin_reg', 'IntegrationPluginBase', 'ActionPlugin',
|
||||
]
|
||||
|
@ -6,13 +6,15 @@ from django.conf import settings
|
||||
from django.template.loaders.filesystem import Loader as FilesystemLoader
|
||||
from pathlib import Path
|
||||
|
||||
from plugin import plugin_reg
|
||||
|
||||
|
||||
class PluginTemplateLoader(FilesystemLoader):
|
||||
|
||||
def get_dirs(self):
|
||||
dirname = 'templates'
|
||||
template_dirs = []
|
||||
for plugin in settings.INTEGRATION_PLUGINS.values():
|
||||
for plugin in plugin_reg.plugins.values():
|
||||
new_path = Path(plugin.path) / dirname
|
||||
if Path(new_path).is_dir():
|
||||
template_dirs.append(new_path)
|
||||
|
@ -10,6 +10,8 @@ from django.db import models
|
||||
from django.apps import apps
|
||||
from django.conf import settings
|
||||
|
||||
from plugin import plugin_reg
|
||||
|
||||
|
||||
class PluginConfig(models.Model):
|
||||
""" A PluginConfig object holds settings for plugins.
|
||||
@ -64,7 +66,7 @@ class PluginConfig(models.Model):
|
||||
self.__org_active = self.active
|
||||
|
||||
# append settings from registry
|
||||
self.plugin = settings.INTEGRATION_PLUGINS.get(self.key, None)
|
||||
self.plugin = plugin_reg.plugins.get(self.key, None)
|
||||
|
||||
def get_plugin_meta(name):
|
||||
if self.plugin:
|
||||
|
@ -34,6 +34,10 @@ logger = logging.getLogger('inventree')
|
||||
|
||||
|
||||
class Plugins:
|
||||
def __init__(self) -> None:
|
||||
self.plugins = {}
|
||||
self.plugins_inactive = {}
|
||||
|
||||
# region public plugin functions
|
||||
def load_plugins(self):
|
||||
"""load and activate all IntegrationPlugins"""
|
||||
@ -166,7 +170,7 @@ class Plugins:
|
||||
plugin_db_setting.save()
|
||||
|
||||
# add to inactive plugins so it shows up in the ui
|
||||
settings.INTEGRATION_PLUGINS_INACTIVE[plug_key] = plugin_db_setting
|
||||
self.plugins_inactive[plug_key] = plugin_db_setting
|
||||
continue # continue -> the plugin is not loaded
|
||||
|
||||
# init package
|
||||
@ -180,10 +184,10 @@ class Plugins:
|
||||
plugin.pk = plugin_db_setting.pk
|
||||
|
||||
# safe reference
|
||||
settings.INTEGRATION_PLUGINS[plugin.slug] = plugin
|
||||
self.plugins[plugin.slug] = plugin
|
||||
else:
|
||||
# save for later reference
|
||||
settings.INTEGRATION_PLUGINS_INACTIVE[plug_key] = plugin_db_setting
|
||||
self.plugins_inactive[plug_key] = plugin_db_setting
|
||||
|
||||
def _activate_plugins(self, force_reload=False):
|
||||
"""run integration functions for all plugins
|
||||
@ -192,7 +196,7 @@ class Plugins:
|
||||
:type force_reload: bool, optional
|
||||
"""
|
||||
# activate integrations
|
||||
plugins = settings.INTEGRATION_PLUGINS.items()
|
||||
plugins = self.plugins.items()
|
||||
logger.info(f'Found {len(plugins)} active plugins')
|
||||
|
||||
self.activate_integration_globalsettings(plugins)
|
||||
@ -366,8 +370,8 @@ class Plugins:
|
||||
|
||||
def _clean_registry(self):
|
||||
# remove all plugins from registry
|
||||
settings.INTEGRATION_PLUGINS = {}
|
||||
settings.INTEGRATION_PLUGINS_INACTIVE = {}
|
||||
self.plugins = {}
|
||||
self.plugins_inactive = {}
|
||||
|
||||
def _update_urls(self):
|
||||
from InvenTree.urls import urlpatterns
|
||||
|
@ -7,6 +7,7 @@ from django import template
|
||||
from django.urls import reverse
|
||||
|
||||
from common.models import InvenTreeSetting
|
||||
from plugin import plugin_reg
|
||||
|
||||
|
||||
register = template.Library()
|
||||
@ -15,13 +16,13 @@ register = template.Library()
|
||||
@register.simple_tag()
|
||||
def plugin_list(*args, **kwargs):
|
||||
""" Return a list of all installed integration plugins """
|
||||
return djangosettings.INTEGRATION_PLUGINS
|
||||
return plugin_reg.plugins
|
||||
|
||||
|
||||
@register.simple_tag()
|
||||
def inactive_plugin_list(*args, **kwargs):
|
||||
""" Return a list of all inactive integration plugins """
|
||||
return djangosettings.INTEGRATION_PLUGINS_INACTIVE
|
||||
return plugin_reg.plugins_inactive
|
||||
|
||||
|
||||
@register.simple_tag()
|
||||
|
@ -9,6 +9,7 @@ from plugin.samples.integration.sample import SampleIntegrationPlugin
|
||||
from plugin.samples.integration.another_sample import WrongIntegrationPlugin, NoIntegrationPlugin
|
||||
from plugin.plugins import load_integration_plugins # , load_action_plugins, load_barcode_plugins
|
||||
import plugin.templatetags.plugin_extras as plugin_tags
|
||||
from plugin import plugin_reg
|
||||
|
||||
|
||||
class InvenTreePluginTests(TestCase):
|
||||
@ -57,7 +58,7 @@ class PluginTagTests(TestCase):
|
||||
|
||||
def test_tag_plugin_list(self):
|
||||
"""test that all plugins are listed"""
|
||||
self.assertEqual(plugin_tags.plugin_list(), settings.INTEGRATION_PLUGINS)
|
||||
self.assertEqual(plugin_tags.plugin_list(), plugin_reg.plugins)
|
||||
|
||||
def test_tag_plugin_globalsettings(self):
|
||||
"""check all plugins are listed"""
|
||||
|
@ -5,6 +5,7 @@ from django.conf import settings
|
||||
from django.conf.urls import url, include
|
||||
|
||||
from plugin.helpers import get_plugin_error
|
||||
from plugin import plugin_reg
|
||||
|
||||
|
||||
PLUGIN_BASE = 'plugin' # Constant for links
|
||||
@ -13,7 +14,7 @@ PLUGIN_BASE = 'plugin' # Constant for links
|
||||
def get_plugin_urls():
|
||||
"""returns a urlpattern that can be integrated into the global urls"""
|
||||
urls = []
|
||||
for plugin in settings.INTEGRATION_PLUGINS.values():
|
||||
for plugin in plugin_reg.plugins.values():
|
||||
if plugin.mixin_enabled('urls'):
|
||||
urls.append(plugin.urlpatterns)
|
||||
# TODO wrap everything in plugin_url_wrapper
|
||||
|
Loading…
Reference in New Issue
Block a user