diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/config/config.py | 6 | ||||
| -rw-r--r-- | src/mailman/core/plugins.py | 3 | ||||
| -rw-r--r-- | src/mailman/rest/plugins.py | 13 | ||||
| -rw-r--r-- | src/mailman/utilities/plugins.py | 2 |
4 files changed, 13 insertions, 11 deletions
diff --git a/src/mailman/config/config.py b/src/mailman/config/config.py index 4ae6bfd65..16f265626 100644 --- a/src/mailman/config/config.py +++ b/src/mailman/config/config.py @@ -249,8 +249,10 @@ class Configuration: @property def plugin_configs(self): - """Iterate over all the plugin configuration sections.""" - return self._config.getByCategory('plugin', []) + """Return all the plugin configuration sections.""" + plugin_sections = self._config.getByCategory('plugin', []) + for section in plugin_sections: + yield section.category_and_section_names[1], section @property def language_configs(self): diff --git a/src/mailman/core/plugins.py b/src/mailman/core/plugins.py index 565c590b5..e891f380d 100644 --- a/src/mailman/core/plugins.py +++ b/src/mailman/core/plugins.py @@ -28,13 +28,12 @@ from zope.interface.verify import verifyObject @public def initialize(): """Initialize all enabled plugins.""" - for plugin_config in config.plugin_configs: + for name, plugin_config in config.plugin_configs: plugin_class_path = plugin_config['class'] if as_boolean(plugin_config.enable) and plugin_class_path: plugin_class = find_name(plugin_class_path) plugin = plugin_class() verifyObject(IPlugin, plugin) - name = plugin_config.name.split('.')[-1] plugin.name = name assert plugin.name not in config.plugins, ( 'Duplicate plugin "{}" found in {}'.format( diff --git a/src/mailman/rest/plugins.py b/src/mailman/rest/plugins.py index 2209e634e..fa2605f24 100644 --- a/src/mailman/rest/plugins.py +++ b/src/mailman/rest/plugins.py @@ -29,18 +29,19 @@ class AllPlugins(CollectionMixin): def _resource_as_dict(self, plugin_config): """See `CollectionMixin`.""" + name, plugin_section = plugin_config resource = { - 'name': plugin_config.name.split('.')[-1], - 'class': plugin_config['class'], - 'enable': as_boolean(plugin_config['enable']), - 'path': plugin_config['path'], - 'configuration': plugin_config['configuration'] + 'name': name, + 'class': plugin_section['class'], + 'enable': as_boolean(plugin_section['enable']), + 'path': plugin_section['path'], + 'configuration': plugin_section['configuration'] } return resource def _get_collection(self, request): """See `CollectionMixin`.""" - return config.plugin_configs + return sorted(config.plugin_configs) def on_get(self, request, response): """/plugins""" diff --git a/src/mailman/utilities/plugins.py b/src/mailman/utilities/plugins.py index a8449af31..98a34fbca 100644 --- a/src/mailman/utilities/plugins.py +++ b/src/mailman/utilities/plugins.py @@ -38,7 +38,7 @@ def find_pluggable_components(subpackage, interface): """ yield from find_components('mailman.' + subpackage, interface) package_roots = [plugin.path - for plugin in config.plugin_configs + for name, plugin in config.plugin_configs if as_boolean(plugin.enable) and plugin.path] for package_root in package_roots: package = package_root + '.' + subpackage |
