From bcb0f62e42580b30b98b7e703bd2f926b0787b51 Mon Sep 17 00:00:00 2001 From: Matthias <matthias.mair@oewf.org> Date: Mon, 10 Jan 2022 00:59:24 +0100 Subject: [PATCH] remove old loading mechanism --- InvenTree/InvenTree/api.py | 17 ++++------------- InvenTree/plugin/plugins.py | 11 ----------- InvenTree/plugin/registry.py | 10 ++++++++++ 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/InvenTree/InvenTree/api.py b/InvenTree/InvenTree/api.py index 8249a093aa..069fd9492d 100644 --- a/InvenTree/InvenTree/api.py +++ b/InvenTree/InvenTree/api.py @@ -5,8 +5,6 @@ Main JSON interface views # -*- coding: utf-8 -*- from __future__ import unicode_literals -import logging - from django.utils.translation import ugettext_lazy as _ from django.http import JsonResponse @@ -21,15 +19,7 @@ from .views import AjaxView from .version import inventreeVersion, inventreeApiVersion, inventreeInstanceName from .status import is_worker_running -from plugin.plugins import load_action_plugins - - -logger = logging.getLogger("inventree") - - -logger.info("Loading action plugins...") -action_plugins = load_action_plugins() - +from plugin import plugin_registry class InfoView(AjaxView): """ Simple JSON endpoint for InvenTree information. @@ -110,10 +100,11 @@ class ActionPluginView(APIView): 'error': _("No action specified") }) + action_plugins = plugin_registry.with_mixin('action') for plugin_class in action_plugins: if plugin_class.action_name() == action: - - plugin = plugin_class(request.user, data=data) + # TODO @matmair use easier syntax once InvenTree 0.7.0 is released + plugin = plugin_class.init(request.user, data=data) plugin.perform_action() diff --git a/InvenTree/plugin/plugins.py b/InvenTree/plugin/plugins.py index e2be1e6427..f0150495cb 100644 --- a/InvenTree/plugin/plugins.py +++ b/InvenTree/plugin/plugins.py @@ -8,10 +8,6 @@ import logging from django.core.exceptions import AppRegistryNotReady -# Action plugins -import plugin.builtin.action as action -from plugin.action import ActionPlugin - logger = logging.getLogger("inventree") @@ -97,13 +93,6 @@ def load_plugins(name: str, cls, module): return plugins -def load_action_plugins(): - """ - Return a list of all registered action plugins - """ - return load_plugins('action', ActionPlugin, action) - - def load_barcode_plugins(): """ Return a list of all registered barcode plugins diff --git a/InvenTree/plugin/registry.py b/InvenTree/plugin/registry.py index b7e37d22ba..907f1e179f 100644 --- a/InvenTree/plugin/registry.py +++ b/InvenTree/plugin/registry.py @@ -183,7 +183,17 @@ class PluginsRegistry: # Log collected plugins logger.info(f'Collected {len(self.plugin_modules)} plugins!') logger.info(", ".join([a.__module__ for a in self.plugin_modules])) + def with_mixin(self, mixin: str): + """ + Returns reference to all plugins that have a specified mixin enabled + """ + result = [] + for plugin in self.plugins.items(): + if plugin.mixin_enabled(mixin): + result.append(plugin) + + return result def _init_plugins(self, disabled=None): """ Initialise all found plugins