summaryrefslogtreecommitdiff
path: root/src/mailman/config/config.py
diff options
context:
space:
mode:
authorBarry Warsaw2012-07-06 21:08:41 -0400
committerBarry Warsaw2012-07-06 21:08:41 -0400
commit8d8ab1655b51e277570005b445d3b014afcfbc57 (patch)
tree6ba0147d975636e129a787c9dfa64dae8cffae89 /src/mailman/config/config.py
parentcd3f84b301c2150fea5402129a2e7bc862fbb52b (diff)
parent01415190ab44e69a8f09a6411564a7cb288404e8 (diff)
downloadmailman-8d8ab1655b51e277570005b445d3b014afcfbc57.tar.gz
mailman-8d8ab1655b51e277570005b445d3b014afcfbc57.tar.zst
mailman-8d8ab1655b51e277570005b445d3b014afcfbc57.zip
Diffstat (limited to 'src/mailman/config/config.py')
-rw-r--r--src/mailman/config/config.py41
1 files changed, 13 insertions, 28 deletions
diff --git a/src/mailman/config/config.py b/src/mailman/config/config.py
index 48c849148..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, implements
+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,16 +49,10 @@ SPACE = ' '
-class IConfiguration(Interface):
- """Marker interface; used for adaptation in the REST API."""
-
-
-
+@implementer(IConfiguration)
class Configuration:
"""The core global configuration object."""
- implements(IConfiguration)
-
def __init__(self):
self.switchboards = {}
self.QFILE_SCHEMA_VERSION = version.QFILE_SCHEMA_VERSION
@@ -71,6 +67,7 @@ class Configuration:
self.handlers = {}
self.pipelines = {}
self.commands = {}
+ self.password_context = None
def _clear(self):
"""Clear the cached configuration variables."""
@@ -119,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."""
@@ -250,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