------------------------------------------------------------
revno: 6790
committer: Barry Warsaw <[email protected]>
branch nick: 3.0
timestamp: Wed 2009-08-26 02:27:37 -0400
message:
  Instead of using an adapter, use a utility to get the mailing list manager.
modified:
  setup.py
  src/mailman/Archiver/HyperArch.py
  src/mailman/app/lifecycle.py
  src/mailman/app/registrar.py
  src/mailman/bin/inject.py
  src/mailman/bin/list_members.py
  src/mailman/bin/list_owners.py
  src/mailman/bin/withlist.py
  src/mailman/commands/cli_lists.py
  src/mailman/commands/cli_members.py
  src/mailman/commands/docs/create.txt
  src/mailman/commands/docs/remove.txt
  src/mailman/config/configure.zcml
  src/mailman/database/__init__.py
  src/mailman/database/listmanager.py
  src/mailman/docs/bounces.txt
  src/mailman/docs/lifecycle.txt
  src/mailman/docs/listmanager.txt
  src/mailman/docs/mlist-addresses.txt
  src/mailman/docs/styles.txt
  src/mailman/interfaces/database.py
  src/mailman/mta/postfix.py
  src/mailman/queue/__init__.py
  src/mailman/queue/lmtp.py
  src/mailman/rest/docs/lists.txt
  src/mailman/rest/urls.py
  src/mailman/rest/webservice.py


--
lp:mailman
https://code.launchpad.net/~mailman-coders/mailman/3.0

Your team Mailman Checkins is subscribed to branch lp:mailman.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mailman-coders/mailman/3.0/+edit-subscription.
=== modified file 'setup.py'
--- setup.py	2009-08-25 22:49:43 +0000
+++ setup.py	2009-08-26 06:27:37 +0000
@@ -96,8 +96,9 @@
         'locknix',
         'munepy',
         'storm',
+        'zope.component',
+        'zope.interface',
         'zope.schema',
-        'zope.interface',
         ],
     setup_requires = [
         'setuptools_bzr',

=== modified file 'src/mailman/Archiver/HyperArch.py'
--- src/mailman/Archiver/HyperArch.py	2009-08-21 20:11:50 +0000
+++ src/mailman/Archiver/HyperArch.py	2009-08-26 06:27:37 +0000
@@ -43,6 +43,7 @@
 from lazr.config import as_boolean
 from locknix.lockfile import Lock
 from string import Template
+from zope.component import getUtility
 
 from mailman import Utils
 from mailman import i18n
@@ -320,7 +321,7 @@
         listname = d.get('__listname')
         if listname:
             del d['__listname']
-            d['_mlist'] = IListManager(config).get(listname)
+            d['_mlist'] = getUtility(IListManager).get(listname)
         if not d.has_key('_lang'):
             if hasattr(self, '_mlist'):
                 self._lang = self._mlist.preferred_language

=== modified file 'src/mailman/app/lifecycle.py'
--- src/mailman/app/lifecycle.py	2009-08-21 20:11:50 +0000
+++ src/mailman/app/lifecycle.py	2009-08-26 06:27:37 +0000
@@ -30,6 +30,8 @@
 import shutil
 import logging
 
+from zope.component import getUtility
+
 from mailman.config import config
 from mailman.email.validate import validate
 from mailman.interfaces.domain import (
@@ -52,7 +54,7 @@
     listname, domain = fqdn_listname.split('@', 1)
     if domain not in IDomainManager(config):
         raise BadDomainSpecificationError(domain)
-    mlist = IListManager(config).create(fqdn_listname)
+    mlist = getUtility(IListManager).create(fqdn_listname)
     for style in config.style_manager.lookup(mlist):
         style.apply(mlist)
     # Coordinate with the MTA, as defined in the configuration file.
@@ -81,7 +83,7 @@
         for member in mailing_list.subscribers.members:
             member.unsubscribe()
         # Delete the mailing list from the database.
-        IListManager(config).delete(mailing_list)
+        getUtility(IListManager).delete(mailing_list)
         # Do the MTA-specific list deletion tasks
         call_name(config.mta.incoming).create(mailing_list)
         # Remove the list directory.

=== modified file 'src/mailman/app/registrar.py'
--- src/mailman/app/registrar.py	2009-08-21 20:11:50 +0000
+++ src/mailman/app/registrar.py	2009-08-26 06:27:37 +0000
@@ -28,6 +28,7 @@
 import datetime
 
 from pkg_resources import resource_string
+from zope.component import getUtility
 from zope.interface import implements
 
 from mailman.config import config
@@ -137,7 +138,7 @@
         # to the list right now.
         list_name = pendable.get('list_name')
         if list_name is not None:
-            mlist = IListManager(config).get(list_name)
+            mlist = getUtility(IListManager).get(list_name)
             if mlist:
                 addr.subscribe(mlist, MemberRole.member)
         return True

=== modified file 'src/mailman/bin/inject.py'
--- src/mailman/bin/inject.py	2009-08-21 20:11:50 +0000
+++ src/mailman/bin/inject.py	2009-08-26 06:27:37 +0000
@@ -19,6 +19,7 @@
 import sys
 
 from email import message_from_string
+from zope.component import getUtility
 
 from mailman import Utils
 from mailman.configuration import config
@@ -72,7 +73,7 @@
             options.parser.error(_('Bad queue directory: $qdir'))
 
     fqdn_listname = options.options.listname
-    mlist = IListManager(config).get(fqdn_listname)
+    mlist = getUtility(IListManager).get(fqdn_listname)
     if mlist is None:
         options.parser.error(_('No such list: $fqdn_listname'))
 

=== modified file 'src/mailman/bin/list_members.py'
--- src/mailman/bin/list_members.py	2009-08-21 22:07:35 +0000
+++ src/mailman/bin/list_members.py	2009-08-26 06:27:37 +0000
@@ -18,6 +18,7 @@
 import sys
 
 from email.Utils import formataddr
+from zope.component import getUtility
 
 from mailman.config import config
 from mailman.core import errors
@@ -143,7 +144,7 @@
     else:
         fp = sys.stdout
 
-    mlist = IListManager(config).get(fqdn_listname)
+    mlist = getUtility(IListManager).get(fqdn_listname)
     if mlist is None:
         options.parser.error(_('No such list: $fqdn_listname'))
 

=== modified file 'src/mailman/bin/list_owners.py'
--- src/mailman/bin/list_owners.py	2009-08-21 22:07:35 +0000
+++ src/mailman/bin/list_owners.py	2009-08-26 06:27:37 +0000
@@ -18,8 +18,9 @@
 import sys
 import optparse
 
+from zope.component import getUtility
+
 from mailman.MailList import MailList
-from mailman.configuration import config
 from mailman.i18n import _
 from mailman.initialize import initialize
 from mailman.interfaces.listmanager import IListManager
@@ -54,12 +55,12 @@
     parser, opts, args = parseargs()
     initialize(opts.config)
 
-    listmgr = IListManager(config)
-    listnames = set(args or listmgr.names)
+    list_manager = getUtility(IListManager)
+    listnames = set(args or list_manager.names)
     bylist = {}
 
     for listname in listnames:
-        mlist = listmgr.get(listname)
+        mlist = list_manager.get(listname)
         addrs = [addr.address for addr in mlist.owners.addresses]
         if opts.moderators:
             addrs.extend([addr.address for addr in mlist.moderators.addresses])

=== modified file 'src/mailman/bin/withlist.py'
--- src/mailman/bin/withlist.py	2009-08-21 22:07:35 +0000
+++ src/mailman/bin/withlist.py	2009-08-26 06:27:37 +0000
@@ -19,6 +19,8 @@
 import sys
 import optparse
 
+from zope.component import getUtility
+
 from mailman import interact
 from mailman.config import config
 from mailman.core.initialize import initialize
@@ -41,7 +43,7 @@
     # XXX FIXME Remove this when this script is converted to
     # MultipleMailingListOptions.
     listname = listname.decode(sys.getdefaultencoding())
-    mlist = IListManager(config).get(listname)
+    mlist = getUtility(IListManager).get(listname)
     if mlist is None:
         print >> sys.stderr, _('Unknown list: $listname')
     else:
@@ -202,7 +204,7 @@
     r = None
     if opts.all:
         r = [do_list(listname, args, func)
-             for listname in config.list_manager.names]
+             for listname in getUtility(IListManager).names]
     elif dolist:
         listname = args.pop(0).lower().strip()
         r = do_list(listname, args, func)

=== modified file 'src/mailman/commands/cli_lists.py'
--- src/mailman/commands/cli_lists.py	2009-08-25 15:19:38 +0000
+++ src/mailman/commands/cli_lists.py	2009-08-26 06:27:37 +0000
@@ -27,6 +27,7 @@
     ]
 
 
+from zope.component import getUtility
 from zope.interface import implements
 
 from mailman.Utils import maketext
@@ -76,7 +77,7 @@
     def process(self, args):
         """See `ICLISubCommand`."""
         mailing_lists = []
-        list_manager = IListManager(config)
+        list_manager = getUtility(IListManager)
         # Gather the matching mailing lists.
         for fqdn_name in sorted(list_manager.names):
             mlist = list_manager.get(fqdn_name)
@@ -252,7 +253,7 @@
         assert len(args.listname) == 1, (
             'Unexpected positional arguments: %s' % args.listname)
         fqdn_listname = args.listname[0]
-        mlist = IListManager(config).get(fqdn_listname)
+        mlist = getUtility(IListManager).get(fqdn_listname)
         if mlist is None:
             if args.archives:
                 log(_('No such list: $fqdn_listname; '

=== modified file 'src/mailman/commands/cli_members.py'
--- src/mailman/commands/cli_members.py	2009-08-21 20:11:50 +0000
+++ src/mailman/commands/cli_members.py	2009-08-26 06:27:37 +0000
@@ -29,6 +29,7 @@
 import codecs
 
 from email.utils import parseaddr
+from zope.component import getUtility
 from zope.interface import implements
 
 from mailman.app.membership import add_member
@@ -68,7 +69,7 @@
         assert len(args.listname) == 1, (
             'Unexpected positional arguments: %s' % args.listname)
         fqdn_listname = args.listname[0]
-        mlist = IListManager(config).get(fqdn_listname)
+        mlist = getUtility(IListManager).get(fqdn_listname)
         if mlist is None:
             self.parser.error(_('No such list: $fqdn_listname'))
         if args.filename == '-':

=== modified file 'src/mailman/commands/docs/create.txt'
--- src/mailman/commands/docs/create.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/commands/docs/create.txt	2009-08-26 06:27:37 +0000
@@ -37,7 +37,8 @@
 Now both the domain and the mailing list exist in the database.
 
     >>> from mailman.interfaces.listmanager import IListManager
-    >>> list_manager = IListManager(config)
+    >>> from zope.component import getUtility
+    >>> list_manager = getUtility(IListManager)
     >>> list_manager.get('[email protected]')
     <mailing list "[email protected]" at ...>
 

=== modified file 'src/mailman/commands/docs/remove.txt'
--- src/mailman/commands/docs/remove.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/commands/docs/remove.txt	2009-08-26 06:27:37 +0000
@@ -9,7 +9,8 @@
     <mailing list "[email protected]" at ...>
 
     >>> from mailman.interfaces.listmanager import IListManager
-    >>> list_manager = IListManager(config)
+    >>> from zope.component import getUtility
+    >>> list_manager = getUtility(IListManager)
     >>> list_manager.get('[email protected]')
     <mailing list "[email protected]" at ...>
 

=== modified file 'src/mailman/config/configure.zcml'
--- src/mailman/config/configure.zcml	2009-08-21 20:11:50 +0000
+++ src/mailman/config/configure.zcml	2009-08-26 06:27:37 +0000
@@ -7,12 +7,6 @@
   <!-- 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"
@@ -36,4 +30,10 @@
     factory="mailman.database.domain.DomainManager"
     />
 
+  <!-- utilities -->
+  <utility
+    factory="mailman.database.listmanager.ListManager"
+    provides="mailman.interfaces.listmanager.IListManager"
+    />
+
 </configure>

=== modified file 'src/mailman/database/__init__.py'
--- src/mailman/database/__init__.py	2009-08-21 20:11:50 +0000
+++ src/mailman/database/__init__.py	2009-08-26 06:27:37 +0000
@@ -55,7 +55,6 @@
 
     def __init__(self):
         self.url = None
-        self.list_manager = None
         self.user_manager = None
         self.message_store = None
         self.pendings = None

=== modified file 'src/mailman/database/listmanager.py'
--- src/mailman/database/listmanager.py	2009-08-21 20:11:50 +0000
+++ src/mailman/database/listmanager.py	2009-08-26 06:27:37 +0000
@@ -29,31 +29,23 @@
 
 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
 
 
 
-class ListManager(object):
+class ListManager:
     """An implementation of the `IListManager` interface."""
 
     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 = self.store.find(
+        mlist = config.db.store.find(
             MailingList,
             MailingList.list_name == listname,
             MailingList.host_name == hostname).one()
@@ -61,13 +53,13 @@
             raise ListAlreadyExistsError(fqdn_listname)
         mlist = MailingList(fqdn_listname)
         mlist.created_at = datetime.datetime.now()
-        self.store.add(mlist)
+        config.db.store.add(mlist)
         return mlist
 
     def get(self, fqdn_listname):
         """See `IListManager`."""
         listname, hostname = fqdn_listname.split('@', 1)
-        mlist = self.store.find(MailingList,
+        mlist = config.db.store.find(MailingList,
                                      list_name=listname,
                                      host_name=hostname).one()
         if mlist is not None:
@@ -77,7 +69,7 @@
 
     def delete(self, mlist):
         """See `IListManager`."""
-        self.store.remove(mlist)
+        config.db.store.remove(mlist)
 
     @property
     def mailing_lists(self):
@@ -88,7 +80,7 @@
     @property
     def names(self):
         """See `IListManager`."""
-        for mlist in self.store.find(MailingList):
+        for mlist in config.db.store.find(MailingList):
             yield '{...@{1}'.format(mlist.list_name, mlist.host_name)
 
     def get_mailing_lists(self):

=== modified file 'src/mailman/docs/bounces.txt'
--- src/mailman/docs/bounces.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/docs/bounces.txt	2009-08-26 06:27:37 +0000
@@ -14,7 +14,8 @@
 lists can bounce a message with an optional error message.
 
     >>> from mailman.interfaces.listmanager import IListManager
-    >>> mlist = IListManager(config).create('[email protected]')
+    >>> from zope.component import getUtility
+    >>> mlist = getUtility(IListManager).create('[email protected]')
     >>> mlist.preferred_language = 'en'
 
 Any message can be bounced.

=== modified file 'src/mailman/docs/lifecycle.txt'
--- src/mailman/docs/lifecycle.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/docs/lifecycle.txt	2009-08-26 06:27:37 +0000
@@ -1,5 +1,6 @@
-Application level list lifecycle
---------------------------------
+=================================
+Application level list life cycle
+=================================
 
 The low-level way to create and delete a mailing list is to use the
 IListManager interface.  This interface simply adds or removes the appropriate
@@ -20,7 +21,7 @@
 
 
 Posting address validation
---------------------------
+==========================
 
 If you try to use the higher-level interface to create a mailing list with a
 bogus posting address, you get an exception.
@@ -40,7 +41,7 @@
 
 
 Creating a list applies its styles
-----------------------------------
+==================================
 
 Start by registering a test style.
 
@@ -71,7 +72,7 @@
 
 
 Creating a list with owners
----------------------------
+===========================
 
 You can also specify a list of owner email addresses.  If these addresses are
 not yet known, they will be registered, and new users will be linked to them.
@@ -118,7 +119,7 @@
 
 
 Removing a list
----------------
+===============
 
 Removing a mailing list deletes the list, all its subscribers, and any related
 artifacts.
@@ -127,7 +128,8 @@
     >>> remove_list(mlist_2.fqdn_listname, mlist_2, True)
 
     >>> from mailman.interfaces.listmanager import IListManager
-    >>> print IListManager(config).get('[email protected]')
+    >>> from zope.component import getUtility
+    >>> print getUtility(IListManager).get('[email protected]')
     None
 
 We should now be able to completely recreate the mailing list.

=== modified file 'src/mailman/docs/listmanager.txt'
--- src/mailman/docs/listmanager.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/docs/listmanager.txt	2009-08-26 06:27:37 +0000
@@ -8,7 +8,8 @@
 on the global config object.
 
     >>> from mailman.interfaces.listmanager import IListManager
-    >>> list_manager = IListManager(config)
+    >>> from zope.component import getUtility
+    >>> list_manager = getUtility(IListManager)
 
 
 Creating a mailing list

=== modified file 'src/mailman/docs/mlist-addresses.txt'
--- src/mailman/docs/mlist-addresses.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/docs/mlist-addresses.txt	2009-08-26 06:27:37 +0000
@@ -1,11 +1,12 @@
+======================
 Mailing list addresses
 ======================
 
 Every mailing list has a number of addresses which are publicly available.
 These are defined in the IMailingListAddresses interface.
 
-    >>> from mailman.interfaces.listmanager import IListManager
-    >>> mlist = IListManager(config).create('[email protected]')
+    >>> from mailman.app.lifecycle import create_list
+    >>> mlist = create_list('[email protected]')
 
 The posting address is where people send messages to be posted to the mailing
 list.  This is exactly the same as the fully qualified list name.
@@ -56,7 +57,7 @@
 
 
 Email confirmations
--------------------
+===================
 
 Email confirmation messages are sent when actions such as subscriptions need
 to be confirmed.  It requires that a cookie be provided, which will be

=== modified file 'src/mailman/docs/styles.txt'
--- src/mailman/docs/styles.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/docs/styles.txt	2009-08-26 06:27:37 +0000
@@ -15,7 +15,9 @@
 Let's start with a vanilla mailing list and a default style manager.
 
     >>> from mailman.interfaces.listmanager import IListManager
-    >>> mlist = IListManager(config).create('[email protected]')
+    >>> from zope.component import getUtility
+    >>> mlist = getUtility(IListManager).create('[email protected]')
+
     >>> from mailman.styles.manager import StyleManager
     >>> style_manager = StyleManager()
     >>> style_manager.populate()

=== modified file 'src/mailman/interfaces/database.py'
--- src/mailman/interfaces/database.py	2009-01-17 02:04:21 +0000
+++ src/mailman/interfaces/database.py	2009-08-26 06:27:37 +0000
@@ -84,9 +84,6 @@
     def abort():
         """Abort the current transaction."""
 
-    list_manager = Attribute(
-        """The IListManager instance provided by the database layer.""")
-
     user_manager = Attribute(
         """The IUserManager instance provided by the database layer.""")
 

=== modified file 'src/mailman/mta/postfix.py'
--- src/mailman/mta/postfix.py	2009-08-21 22:07:35 +0000
+++ src/mailman/mta/postfix.py	2009-08-26 06:27:37 +0000
@@ -34,6 +34,7 @@
 import datetime
 
 from locknix.lockfile import Lock
+from zope.component import getUtility
 from zope.interface import implements
 
 from mailman import Utils
@@ -80,7 +81,7 @@
         # Sort all existing mailing list names first by domain, then my local
         # part.  For postfix we need a dummy entry for the domain.
         by_domain = {}
-        for mailing_list in IListManager(config).mailing_lists:
+        for mailing_list in getUtility(IListManager).mailing_lists:
             by_domain.setdefault(mailing_list.host_name, []).append(
                 mailing_list.list_name)
         with open(path + '.new', 'w') as fp:

=== modified file 'src/mailman/queue/__init__.py'
--- src/mailman/queue/__init__.py	2009-08-21 22:07:35 +0000
+++ src/mailman/queue/__init__.py	2009-08-26 06:27:37 +0000
@@ -47,6 +47,7 @@
 
 from cStringIO import StringIO
 from lazr.config import as_boolean, as_timedelta
+from zope.component import getUtility
 from zope.interface import implements
 
 from mailman import i18n
@@ -418,7 +419,7 @@
         #
         # Find out which mailing list this message is destined for.
         listname = unicode(msgdata.get('listname'))
-        mlist = IListManager(config).get(listname)
+        mlist = getUtility(IListManager).get(listname)
         if mlist is None:
             elog.error('Dequeuing message destined for missing list: %s',
                        listname)

=== modified file 'src/mailman/queue/lmtp.py'
--- src/mailman/queue/lmtp.py	2009-08-21 22:07:35 +0000
+++ src/mailman/queue/lmtp.py	2009-08-26 06:27:37 +0000
@@ -37,6 +37,7 @@
 import asyncore
 
 from email.utils import parseaddr
+from zope.component import getUtility
 
 from mailman.config import config
 from mailman.database.transaction import txn
@@ -134,7 +135,7 @@
         try:
             # Refresh the list of list names every time we process a message
             # since the set of mailing lists could have changed.
-            listnames = set(IListManager(config).names)
+            listnames = set(getUtility(IListManager).names)
             qlog.debug('listnames: %s', listnames)
             # Parse the message data.  If there are any defects in the
             # message, reject it right away; it's probably spam. 

=== modified file 'src/mailman/rest/docs/lists.txt'
--- src/mailman/rest/docs/lists.txt	2009-08-21 22:07:35 +0000
+++ src/mailman/rest/docs/lists.txt	2009-08-26 06:27:37 +0000
@@ -55,7 +55,8 @@
 The mailing list exists in the database.
 
     >>> from mailman.interfaces.listmanager import IListManager
-    >>> IListManager(config).get('[email protected]')
+    >>> from zope.component import getUtility
+    >>> getUtility(IListManager).get('[email protected]')
     <mailing list "[email protected]" at ...>
 
     # The above starts a Storm transaction, which will lock the database

=== modified file 'src/mailman/rest/urls.py'
--- src/mailman/rest/urls.py	2009-08-21 22:07:35 +0000
+++ src/mailman/rest/urls.py	2009-08-26 06:27:37 +0000
@@ -28,6 +28,7 @@
 
 import logging
 
+from zope.component import getUtility
 from zope.interface import implements
 from zope.traversing.browser.interfaces import IAbsoluteURL
 
@@ -82,7 +83,7 @@
             return ''
         urls = {
             system: 'system',
-            IListManager(config): 'lists',
+            getUtility(IListManager): 'lists',
             }
         return urls[ob]
 

=== modified file 'src/mailman/rest/webservice.py'
--- src/mailman/rest/webservice.py	2009-08-21 22:07:35 +0000
+++ src/mailman/rest/webservice.py	2009-08-26 06:27:37 +0000
@@ -35,6 +35,7 @@
 from wsgiref.simple_server import WSGIServer, WSGIRequestHandler
 
 from lazr.restful.simple import Request
+from zope.component import getUtility
 from zope.interface import implements
 from zope.publisher.publish import publish
 
@@ -80,7 +81,7 @@
         top_level = dict(
             system=system,
             domains=IDomainCollection(IDomainManager(config)),
-            lists=IListManager(config),
+            lists=getUtility(IListManager),
             )
         next_step = top_level.get(name)
         log.debug('Top level name: %s -> %s', name, next_step)

_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to