summaryrefslogtreecommitdiff
path: root/src/mailman/config/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/config/config.py')
-rw-r--r--src/mailman/config/config.py38
1 files changed, 12 insertions, 26 deletions
diff --git a/src/mailman/config/config.py b/src/mailman/config/config.py
index fc82a2be7..f6c39fcec 100644
--- a/src/mailman/config/config.py
+++ b/src/mailman/config/config.py
@@ -32,13 +32,15 @@ from lazr.config import ConfigSchema, as_boolean
from pkg_resources import resource_stream
from string import Template
from zope.component import getUtility
-from zope.interface import Interface, implementer
+from zope.event import notify
+from zope.interface import implementer
import mailman.templates
from mailman import version
+from mailman.interfaces.configuration import (
+ ConfigurationUpdatedEvent, IConfiguration)
from mailman.interfaces.languages import ILanguageManager
-from mailman.interfaces.styles import IStyleManager
from mailman.utilities.filesystem import makedirs
from mailman.utilities.modules import call_name
@@ -47,11 +49,6 @@ SPACE = ' '
-class IConfiguration(Interface):
- """Marker interface; used for adaptation in the REST API."""
-
-
-
@implementer(IConfiguration)
class Configuration:
"""The core global configuration object."""
@@ -70,6 +67,7 @@ class Configuration:
self.handlers = {}
self.pipelines = {}
self.commands = {}
+ self.password_context = None
def _clear(self):
"""Clear the cached configuration variables."""
@@ -118,26 +116,8 @@ class Configuration:
"""Perform post-processing after loading the configuration files."""
# Expand and set up all directories.
self._expand_paths()
- # Set up the switchboards. Import this here to avoid circular imports.
- from mailman.core.switchboard import Switchboard
- Switchboard.initialize()
- # Set up all the languages.
- languages = self._config.getByCategory('language', [])
- language_manager = getUtility(ILanguageManager)
- for language in languages:
- if language.enabled:
- code = language.name.split('.')[1]
- language_manager.add(
- code, language.charset, language.description)
- # The default language must always be available.
- assert self._config.mailman.default_language in language_manager, (
- 'System default language code not defined: %s' %
- self._config.mailman.default_language)
self.ensure_directories_exist()
- getUtility(IStyleManager).populate()
- # Set the default system language.
- from mailman.core.i18n import _
- _.default = self.mailman.default_language
+ notify(ConfigurationUpdatedEvent(self))
def _expand_paths(self):
"""Expand all configuration paths."""
@@ -249,3 +229,9 @@ class Configuration:
"""Iterate over all the style configuration sections."""
for section in self._config.getByCategory('style', []):
yield section
+
+ @property
+ def language_configs(self):
+ """Iterate over all the language configuration sections."""
+ for section in self._config.getByCategory('language', []):
+ yield section