mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
refactor to plugin app config
This commit is contained in:
parent
685d3df6d1
commit
8ef7a813ec
@ -19,24 +19,14 @@ import socket
|
|||||||
import string
|
import string
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import importlib
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
try:
|
|
||||||
from importlib import metadata
|
|
||||||
except:
|
|
||||||
import importlib_metadata as metadata
|
|
||||||
|
|
||||||
|
|
||||||
import moneyed
|
import moneyed
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.contrib.messages import constants as messages
|
from django.contrib.messages import constants as messages
|
||||||
|
|
||||||
from plugin import plugins as inventree_plugins
|
|
||||||
from plugin.integration import IntegrationPluginBase
|
|
||||||
|
|
||||||
|
|
||||||
def _is_true(x):
|
def _is_true(x):
|
||||||
# Shortcut function to determine if a value "looks" like a boolean
|
# Shortcut function to determine if a value "looks" like a boolean
|
||||||
@ -869,31 +859,7 @@ if not TESTING:
|
|||||||
if DEBUG or TESTING:
|
if DEBUG or TESTING:
|
||||||
PLUGIN_DIRS.append('plugin.samples')
|
PLUGIN_DIRS.append('plugin.samples')
|
||||||
|
|
||||||
# collect all plugins from paths
|
|
||||||
PLUGINS = []
|
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_PLUGINS = {}
|
||||||
INTEGRATION_PLUGIN_SETTING = {}
|
INTEGRATION_PLUGIN_SETTING = {}
|
||||||
INTEGRATION_APPS_LOADED = False # Marks if apps were reloaded yet
|
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
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
import importlib
|
||||||
import pathlib
|
import pathlib
|
||||||
from typing import OrderedDict
|
from typing import OrderedDict
|
||||||
|
|
||||||
@ -7,12 +8,46 @@ from django.apps import AppConfig, apps
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.utils import OperationalError, ProgrammingError
|
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):
|
class PluginConfig(AppConfig):
|
||||||
name = 'plugin'
|
name = 'plugin'
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
from common.models import InvenTreeSetting
|
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()
|
plugins = settings.INTEGRATION_PLUGINS.items()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
Loading…
Reference in New Issue
Block a user