summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBarry Warsaw2009-08-21 16:11:50 -0400
committerBarry Warsaw2009-08-21 16:11:50 -0400
commitda566eb047608ed2e65c71dd25979f01c825c843 (patch)
treee68dc2015f4bb933bcc32cbe0b9b44c66544f3de /src
parente0693ed8106f80515f3ffddd92eb1ea9b77e38d3 (diff)
downloadmailman-da566eb047608ed2e65c71dd25979f01c825c843.tar.gz
mailman-da566eb047608ed2e65c71dd25979f01c825c843.tar.zst
mailman-da566eb047608ed2e65c71dd25979f01c825c843.zip
Diffstat (limited to 'src')
-rw-r--r--src/attic/add_members.py (renamed from src/mailman/bin/add_members.py)0
-rw-r--r--src/mailman/Archiver/HyperArch.py3
-rw-r--r--src/mailman/app/lifecycle.py5
-rw-r--r--src/mailman/app/registrar.py3
-rw-r--r--src/mailman/bin/inject.py3
-rw-r--r--src/mailman/commands/cli_lists.py6
-rw-r--r--src/mailman/commands/cli_members.py3
-rw-r--r--src/mailman/config/configure.zcml6
-rw-r--r--src/mailman/database/__init__.py2
-rw-r--r--src/mailman/database/listmanager.py20
10 files changed, 34 insertions, 17 deletions
diff --git a/src/mailman/bin/add_members.py b/src/attic/add_members.py
index 540c0facb..540c0facb 100644
--- a/src/mailman/bin/add_members.py
+++ b/src/attic/add_members.py
diff --git a/src/mailman/Archiver/HyperArch.py b/src/mailman/Archiver/HyperArch.py
index d78831e8e..b3601f5fa 100644
--- a/src/mailman/Archiver/HyperArch.py
+++ b/src/mailman/Archiver/HyperArch.py
@@ -49,6 +49,7 @@ from mailman import i18n
from mailman.Archiver import HyperDatabase
from mailman.Archiver import pipermail
from mailman.config import config
+from mailman.interfaces.listmanager import IListManager
log = logging.getLogger('mailman.error')
@@ -319,7 +320,7 @@ class Article(pipermail.Article):
listname = d.get('__listname')
if listname:
del d['__listname']
- d['_mlist'] = config.db.list_manager.get(listname)
+ d['_mlist'] = IListManager(config).get(listname)
if not d.has_key('_lang'):
if hasattr(self, '_mlist'):
self._lang = self._mlist.preferred_language
diff --git a/src/mailman/app/lifecycle.py b/src/mailman/app/lifecycle.py
index d7a8ec1a7..b7f30afd8 100644
--- a/src/mailman/app/lifecycle.py
+++ b/src/mailman/app/lifecycle.py
@@ -34,6 +34,7 @@ from mailman.config import config
from mailman.email.validate import validate
from mailman.interfaces.domain import (
BadDomainSpecificationError, IDomainManager)
+from mailman.interfaces.listmanager import IListManager
from mailman.interfaces.member import MemberRole
from mailman.utilities.modules import call_name
@@ -51,7 +52,7 @@ def create_list(fqdn_listname, owners=None):
listname, domain = fqdn_listname.split('@', 1)
if domain not in IDomainManager(config):
raise BadDomainSpecificationError(domain)
- mlist = config.db.list_manager.create(fqdn_listname)
+ mlist = IListManager(config).create(fqdn_listname)
for style in config.style_manager.lookup(mlist):
style.apply(mlist)
# Coordinate with the MTA, as defined in the configuration file.
@@ -80,7 +81,7 @@ def remove_list(fqdn_listname, mailing_list=None, archives=True):
for member in mailing_list.subscribers.members:
member.unsubscribe()
# Delete the mailing list from the database.
- config.db.list_manager.delete(mailing_list)
+ IListManager(config).delete(mailing_list)
# Do the MTA-specific list deletion tasks
call_name(config.mta.incoming).create(mailing_list)
# Remove the list directory.
diff --git a/src/mailman/app/registrar.py b/src/mailman/app/registrar.py
index 4ec7991d6..3161ed149 100644
--- a/src/mailman/app/registrar.py
+++ b/src/mailman/app/registrar.py
@@ -35,6 +35,7 @@ from mailman.email.message import UserNotification
from mailman.email.validate import validate
from mailman.i18n import _
from mailman.interfaces.domain import IDomain
+from mailman.interfaces.listmanager import IListManager
from mailman.interfaces.member import MemberRole
from mailman.interfaces.pending import IPendable
from mailman.interfaces.registrar import IRegistrar
@@ -136,7 +137,7 @@ class Registrar:
# to the list right now.
list_name = pendable.get('list_name')
if list_name is not None:
- mlist = config.db.list_manager.get(list_name)
+ mlist = IListManager(config).get(list_name)
if mlist:
addr.subscribe(mlist, MemberRole.member)
return True
diff --git a/src/mailman/bin/inject.py b/src/mailman/bin/inject.py
index 73f1b9015..591d6697b 100644
--- a/src/mailman/bin/inject.py
+++ b/src/mailman/bin/inject.py
@@ -24,6 +24,7 @@ from mailman import Utils
from mailman.configuration import config
from mailman.i18n import _
from mailman.inject import inject_text
+from mailman.interfaces.listmanager import IListManager
from mailman.message import Message
from mailman.options import SingleMailingListOptions
@@ -71,7 +72,7 @@ def main():
options.parser.error(_('Bad queue directory: $qdir'))
fqdn_listname = options.options.listname
- mlist = config.db.list_manager.get(fqdn_listname)
+ mlist = IListManager(config).get(fqdn_listname)
if mlist is None:
options.parser.error(_('No such list: $fqdn_listname'))
diff --git a/src/mailman/commands/cli_lists.py b/src/mailman/commands/cli_lists.py
index b95d1a779..95c7b650c 100644
--- a/src/mailman/commands/cli_lists.py
+++ b/src/mailman/commands/cli_lists.py
@@ -39,7 +39,7 @@ from mailman.i18n import _, using_language
from mailman.interfaces.command import ICLISubCommand
from mailman.interfaces.domain import (
BadDomainSpecificationError, IDomainManager)
-from mailman.interfaces.listmanager import ListAlreadyExistsError
+from mailman.interfaces.listmanager import IListManager, ListAlreadyExistsError
@@ -76,7 +76,7 @@ class Lists:
def process(self, args):
"""See `ICLISubCommand`."""
mailing_lists = []
- list_manager = config.db.list_manager
+ list_manager = IListManager(config)
# Gather the matching mailing lists.
for fqdn_name in sorted(list_manager.names):
mlist = list_manager.get(fqdn_name)
@@ -251,7 +251,7 @@ remove any residual archives."""))
assert len(args.listname) == 1, (
'Unexpected positional arguments: %s' % args.listname)
fqdn_listname = args.listname[0]
- mlist = config.db.list_manager.get(fqdn_listname)
+ mlist = IListManager(config).get(fqdn_listname)
if mlist is None:
if args.archives:
log(_('No such list: $fqdn_listname; '
diff --git a/src/mailman/commands/cli_members.py b/src/mailman/commands/cli_members.py
index 7e22166ed..5a2a419f7 100644
--- a/src/mailman/commands/cli_members.py
+++ b/src/mailman/commands/cli_members.py
@@ -35,6 +35,7 @@ from mailman.app.membership import add_member
from mailman.config import config
from mailman.i18n import _
from mailman.interfaces.command import ICLISubCommand
+from mailman.interfaces.listmanager import IListManager
from mailman.interfaces.member import DeliveryMode
@@ -67,7 +68,7 @@ class Members:
assert len(args.listname) == 1, (
'Unexpected positional arguments: %s' % args.listname)
fqdn_listname = args.listname[0]
- mlist = config.db.list_manager.get(fqdn_listname)
+ mlist = IListManager(config).get(fqdn_listname)
if mlist is None:
self.parser.error(_('No such list: $fqdn_listname'))
if args.filename == '-':
diff --git a/src/mailman/config/configure.zcml b/src/mailman/config/configure.zcml
index cc1a9face..7e139980c 100644
--- a/src/mailman/config/configure.zcml
+++ b/src/mailman/config/configure.zcml
@@ -7,6 +7,12 @@
<!-- adapters -->
<adapter
+ for="mailman.config.config.IConfiguration"
+ provides="mailman.interfaces.listmanager.IListManager"
+ factory="mailman.database.listmanager.ListManager"
+ />
+
+ <adapter
for="mailman.interfaces.domain.IDomain"
provides="mailman.interfaces.registrar.IRegistrar"
factory="mailman.app.registrar.Registrar"
diff --git a/src/mailman/database/__init__.py b/src/mailman/database/__init__.py
index 5943df660..dbceaee56 100644
--- a/src/mailman/database/__init__.py
+++ b/src/mailman/database/__init__.py
@@ -36,7 +36,6 @@ from zope.interface import implements
import mailman.version
from mailman.config import config
-from mailman.database.listmanager import ListManager
from mailman.database.messagestore import MessageStore
from mailman.database.pending import Pendings
from mailman.database.requests import Requests
@@ -69,7 +68,6 @@ class StockDatabase:
# the database at the same time.
with Lock(os.path.join(config.LOCK_DIR, 'dbcreate.lck')):
self._create(debug)
- self.list_manager = ListManager()
self.user_manager = UserManager()
self.message_store = MessageStore()
self.pendings = Pendings()
diff --git a/src/mailman/database/listmanager.py b/src/mailman/database/listmanager.py
index f96e44d75..af581cc6e 100644
--- a/src/mailman/database/listmanager.py
+++ b/src/mailman/database/listmanager.py
@@ -29,7 +29,6 @@ import datetime
from zope.interface import implements
-from mailman.config import config
from mailman.database.mailinglist import MailingList
from mailman.interfaces.listmanager import IListManager, ListAlreadyExistsError
from mailman.interfaces.rest import IResolvePathNames
@@ -41,11 +40,20 @@ class ListManager(object):
implements(IListManager, IResolvePathNames)
+ def __init__(self, config):
+ """Create a list manager.
+
+ :param config: The configuration object.
+ :type config: `IConfiguration`
+ """
+ self.config = config
+ self.store = config.db.store
+
# pylint: disable-msg=R0201
def create(self, fqdn_listname):
"""See `IListManager`."""
listname, hostname = fqdn_listname.split('@', 1)
- mlist = config.db.store.find(
+ mlist = self.store.find(
MailingList,
MailingList.list_name == listname,
MailingList.host_name == hostname).one()
@@ -53,13 +61,13 @@ class ListManager(object):
raise ListAlreadyExistsError(fqdn_listname)
mlist = MailingList(fqdn_listname)
mlist.created_at = datetime.datetime.now()
- config.db.store.add(mlist)
+ self.store.add(mlist)
return mlist
def get(self, fqdn_listname):
"""See `IListManager`."""
listname, hostname = fqdn_listname.split('@', 1)
- mlist = config.db.store.find(MailingList,
+ mlist = self.store.find(MailingList,
list_name=listname,
host_name=hostname).one()
if mlist is not None:
@@ -69,7 +77,7 @@ class ListManager(object):
def delete(self, mlist):
"""See `IListManager`."""
- config.db.store.remove(mlist)
+ self.store.remove(mlist)
@property
def mailing_lists(self):
@@ -80,7 +88,7 @@ class ListManager(object):
@property
def names(self):
"""See `IListManager`."""
- for mlist in config.db.store.find(MailingList):
+ for mlist in self.store.find(MailingList):
yield '{0}@{1}'.format(mlist.list_name, mlist.host_name)
def get_mailing_lists(self):