summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Warsaw2009-03-05 21:30:14 -0500
committerBarry Warsaw2009-03-05 21:30:14 -0500
commit1b910e99f740c0ffdf966ef568c467f6dcc24997 (patch)
tree17672253ef8fe09b213db0c2e0b7be9d30af16af
parenta79524dec07ad3bd7f98434d80197e7756d3723d (diff)
downloadmailman-1b910e99f740c0ffdf966ef568c467f6dcc24997.tar.gz
mailman-1b910e99f740c0ffdf966ef568c467f6dcc24997.tar.zst
mailman-1b910e99f740c0ffdf966ef568c467f6dcc24997.zip
-rw-r--r--setup.py1
-rw-r--r--src/mailman/config/schema.cfg3
-rw-r--r--src/mailman/core/initialize.py10
-rw-r--r--src/mailman/interfaces/handler.py2
4 files changed, 10 insertions, 6 deletions
diff --git a/setup.py b/setup.py
index b65c7995c..5385dabfe 100644
--- a/setup.py
+++ b/setup.py
@@ -94,7 +94,6 @@ case second `m'. Any other spelling is incorrect.""",
entry_points = {
'console_scripts': list(scripts),
'mailman.commands' : list(commands),
- 'mailman.database' : 'stock = mailman.database:StockDatabase',
'mailman.handlers' : 'default = mailman.pipeline:initialize',
'mailman.rules' : 'default = mailman.rules:initialize',
'mailman.scrubber' : 'stock = mailman.archiving.pipermail:Pipermail',
diff --git a/src/mailman/config/schema.cfg b/src/mailman/config/schema.cfg
index c93d58986..415ad8693 100644
--- a/src/mailman/config/schema.cfg
+++ b/src/mailman/config/schema.cfg
@@ -97,6 +97,9 @@ max_restarts: 10
sleep_time: 1s
[database]
+# The class implementing the IDatabase interface.
+class: mailman.database.StockDatabase
+
# Use this to set the Storm database engine URL. You generally have one
# primary database connection for all of Mailman. List data and most rosters
# will store their data in this database, although external rosters may access
diff --git a/src/mailman/core/initialize.py b/src/mailman/core/initialize.py
index bb3f8a66e..a92f1fd19 100644
--- a/src/mailman/core/initialize.py
+++ b/src/mailman/core/initialize.py
@@ -36,6 +36,7 @@ __all__ = [
import os
+import sys
from zope.interface.interface import adapter_hooks
from zope.interface.verify import verifyObject
@@ -43,7 +44,6 @@ from zope.interface.verify import verifyObject
import mailman.config.config
import mailman.core.logging
-from mailman.core.plugins import get_plugin
from mailman.interfaces.database import IDatabase
@@ -89,10 +89,12 @@ def initialize_2(debug=False):
:param debug: Should the database layer be put in debug mode?
:type debug: boolean
"""
- database_plugin = get_plugin('mailman.database')
- # Instantiate the database plugin, ensure that it's of the right type, and
+ # Instantiate the database class, ensure that it's of the right type, and
# initialize it. Then stash the object on our configuration object.
- database = database_plugin()
+ database_class = mailman.config.config.database['class']
+ module_name, class_name = database_class.rsplit('.', 1)
+ __import__(module_name)
+ database = getattr(sys.modules[module_name], class_name)()
verifyObject(IDatabase, database)
database.initialize(debug)
mailman.config.config.db = database
diff --git a/src/mailman/interfaces/handler.py b/src/mailman/interfaces/handler.py
index 41d791d5d..4cae6590f 100644
--- a/src/mailman/interfaces/handler.py
+++ b/src/mailman/interfaces/handler.py
@@ -25,7 +25,7 @@ __all__ = [
]
-from zope.interface import Interface, Attribute
+from zope.interface import Attribute, Interface