diff options
| -rw-r--r-- | setup.py | 1 | ||||
| -rw-r--r-- | src/mailman/config/schema.cfg | 3 | ||||
| -rw-r--r-- | src/mailman/core/initialize.py | 10 | ||||
| -rw-r--r-- | src/mailman/interfaces/handler.py | 2 |
4 files changed, 10 insertions, 6 deletions
@@ -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 |
