refactor to plugin app config

This commit is contained in:
Matthias 2021-11-12 01:07:18 +01:00
parent 685d3df6d1
commit 8ef7a813ec
No known key found for this signature in database
GPG Key ID: F50EF5741D33E076
2 changed files with 35 additions and 34 deletions

View File

@ -19,24 +19,14 @@ import socket
import string
import shutil
import sys
import importlib
from datetime import datetime
try:
from importlib import metadata
except:
import importlib_metadata as metadata
import moneyed
import yaml
from django.utils.translation import gettext_lazy as _
from django.contrib.messages import constants as messages
from plugin import plugins as inventree_plugins
from plugin.integration import IntegrationPluginBase
def _is_true(x):
# Shortcut function to determine if a value "looks" like a boolean
@ -869,31 +859,7 @@ if not TESTING:
if DEBUG or TESTING:
PLUGIN_DIRS.append('plugin.samples')
# collect all plugins from paths
PLUGINS = []
for plugin in PLUGIN_DIRS:
modules = inventree_plugins.get_plugins(importlib.import_module(plugin), IntegrationPluginBase, True)
if modules:
[PLUGINS.append(item) for item in modules]
# Get plugins from setup entry points
for entry in metadata.entry_points().get('inventree_plugins', []):
plugin = entry.load()
plugin.is_package = True
PLUGINS.append(plugin)
# collect integration plugins
INTEGRATION_PLUGINS = {}
INTEGRATION_PLUGIN_SETTING = {}
INTEGRATION_APPS_LOADED = False # Marks if apps were reloaded yet
for plugin in inventree_plugins.load_integration_plugins():
# check if package
was_packaged = getattr(plugin, 'is_package', False)
# init package
plugin.is_package = was_packaged
plugin = plugin()
plugin.is_package = was_packaged
# safe reference
INTEGRATION_PLUGINS[plugin.slug] = plugin

View File

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import importlib
import pathlib
from typing import OrderedDict
@ -7,12 +8,46 @@ from django.apps import AppConfig, apps
from django.conf import settings
from django.db.utils import OperationalError, ProgrammingError
try:
from importlib import metadata
except:
import importlib_metadata as metadata
from plugin import plugins as inventree_plugins
from plugin.integration import IntegrationPluginBase
class PluginConfig(AppConfig):
name = 'plugin'
def ready(self):
from common.models import InvenTreeSetting
# Collect plugins from paths
for plugin in settings.PLUGIN_DIRS:
modules = inventree_plugins.get_plugins(importlib.import_module(plugin), IntegrationPluginBase, True)
if modules:
[settings.PLUGINS.append(item) for item in modules]
# Collect plugins from setup entry points
for entry in metadata.entry_points().get('inventree_plugins', []):
plugin = entry.load()
plugin.is_package = True
settings.PLUGINS.append(plugin)
# Initialize integration plugins
for plugin in inventree_plugins.load_integration_plugins():
# check if package
was_packaged = getattr(plugin, 'is_package', False)
# init package
plugin.is_package = was_packaged
plugin = plugin()
plugin.is_package = was_packaged
# safe reference
settings.INTEGRATION_PLUGINS[plugin.slug] = plugin
# activate integrations
plugins = settings.INTEGRATION_PLUGINS.items()
try: