mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* Introduce get_installed_plugins() utility * Extend 500 error template to list installed plugins * Move get_plugin_config() to extras.plugins.utils
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from django.apps import apps
|
|
from django.conf import settings
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
|
|
__all__ = (
|
|
'get_installed_plugins',
|
|
'get_plugin_config',
|
|
)
|
|
|
|
|
|
def get_installed_plugins():
|
|
"""
|
|
Return a dictionary mapping the names of installed plugins to their versions.
|
|
"""
|
|
plugins = {}
|
|
for plugin_name in settings.PLUGINS:
|
|
plugin_name = plugin_name.rsplit('.', 1)[-1]
|
|
plugin_config = apps.get_app_config(plugin_name)
|
|
plugins[plugin_name] = getattr(plugin_config, 'version', None)
|
|
|
|
return dict(sorted(plugins.items()))
|
|
|
|
|
|
def get_plugin_config(plugin_name, parameter, default=None):
|
|
"""
|
|
Return the value of the specified plugin configuration parameter.
|
|
|
|
Args:
|
|
plugin_name: The name of the plugin
|
|
parameter: The name of the configuration parameter
|
|
default: The value to return if the parameter is not defined (default: None)
|
|
"""
|
|
try:
|
|
plugin_config = settings.PLUGINS_CONFIG[plugin_name]
|
|
return plugin_config.get(parameter, default)
|
|
except KeyError:
|
|
raise ImproperlyConfigured(f"Plugin {plugin_name} is not registered.")
|