summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/config/config.py6
-rw-r--r--src/mailman/core/plugins.py3
-rw-r--r--src/mailman/rest/plugins.py13
-rw-r--r--src/mailman/utilities/plugins.py2
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