mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
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.")
|