------------------------------------------------------------
revno: 6539
committer: Barry Warsaw <[EMAIL PROTECTED]>
branch nick: 3.0
timestamp: Thu 2007-08-02 10:47:56 -0400
message:
  Refactor IDatabase interface so that the user_manager, list_manager,
  message_store, and pendings 'databases' hang off the IDatabase object attached
  to the config object.  For IPending, no adaptation is necessary.
modified:
  Mailman/Handlers/Hold.py
  Mailman/Queue/Runner.py
  Mailman/app/registrar.py
  Mailman/database/__init__.py
  Mailman/docs/ack-headers.txt
  Mailman/docs/acknowledge.txt
  Mailman/docs/addresses.txt
  Mailman/docs/after-delivery.txt
  Mailman/docs/antispam.txt
  Mailman/docs/archives.txt
  Mailman/docs/avoid-duplicates.txt
  Mailman/docs/bounces.txt
  Mailman/docs/calc-recips.txt
  Mailman/docs/cleanse.txt
  Mailman/docs/cook-headers.txt
  Mailman/docs/decorate.txt
  Mailman/docs/digests.txt
  Mailman/docs/file-recips.txt
  Mailman/docs/filtering.txt
  Mailman/docs/hold.txt
  Mailman/docs/listmanager.txt
  Mailman/docs/membership.txt
  Mailman/docs/message.txt
  Mailman/docs/messagestore.txt
  Mailman/docs/mlist-addresses.txt
  Mailman/docs/news-runner.txt
  Mailman/docs/nntp.txt
  Mailman/docs/outgoing.txt
  Mailman/docs/pending.txt
  Mailman/docs/registration.txt
  Mailman/docs/reply-to.txt
  Mailman/docs/replybot.txt
  Mailman/docs/runner.txt
  Mailman/docs/scrubber.txt
  Mailman/docs/subject-munging.txt
  Mailman/docs/tagger.txt
  Mailman/docs/usermanager.txt
  Mailman/docs/users.txt
  Mailman/initialize.py
  Mailman/interfaces/database.py
  Mailman/tests/test_documentation.py

=== modified file 'Mailman/Handlers/Hold.py'
--- a/Mailman/Handlers/Hold.py  2007-08-01 21:05:06 +0000
+++ b/Mailman/Handlers/Hold.py  2007-08-02 14:47:56 +0000
@@ -42,7 +42,7 @@
 from Mailman import Utils
 from Mailman import i18n
 from Mailman.configuration import config
-from Mailman.interfaces import IPendable, IPending
+from Mailman.interfaces import IPendable
 
 log = logging.getLogger('mailman.vette')
 
@@ -249,7 +249,7 @@
     # bounce processing that might be needed.
     pendable = HeldMessagePendable(type=HeldMessagePendable.PEND_KEY,
                                    id=str(id))
-    token = IPending(config.db).add(pendable)
+    token = config.db.pendings.add(pendable)
     # Get the language to send the response in.  If the sender is a member,
     # then send it in the member's language, otherwise send it in the mailing
     # list's preferred language.

=== modified file 'Mailman/Queue/Runner.py'
--- a/Mailman/Queue/Runner.py   2007-06-28 05:11:50 +0000
+++ b/Mailman/Queue/Runner.py   2007-08-02 14:47:56 +0000
@@ -147,7 +147,7 @@
         #
         # Find out which mailing list this message is destined for.
         listname = msgdata.get('listname')
-        mlist = config.list_manager.get(listname)
+        mlist = config.db.list_manager.get(listname)
         if not mlist:
             log.error('Dequeuing message destined for missing list: %s',
                       listname)

=== modified file 'Mailman/app/registrar.py'
--- a/Mailman/app/registrar.py  2007-08-01 20:11:08 +0000
+++ b/Mailman/app/registrar.py  2007-08-02 14:47:56 +0000
@@ -32,7 +32,7 @@
 from Mailman.Utils import ValidateEmail
 from Mailman.configuration import config
 from Mailman.i18n import _
-from Mailman.interfaces import IDomain, IPendable, IPending, IRegistrar
+from Mailman.interfaces import IDomain, IPendable, IRegistrar
 
 __i18n_templates__ = True
 
@@ -57,7 +57,7 @@
         ValidateEmail(address)
         # Check to see if there is already a verified IAddress in the database
         # matching this address.  If so, there's nothing to do.
-        usermgr = config.user_manager
+        usermgr = config.db.user_manager
         addr = usermgr.get_address(address)
         if addr and addr.verified_on:
             # Before returning, see if this address is linked to a user.  If
@@ -73,8 +73,7 @@
         pendable = PendableRegistration(type=PendableRegistration.PEND_KEY,
                                         address=address,
                                         real_name=real_name)
-        pendingdb = IPending(config.db)
-        token = pendingdb.add(pendable)
+        token = config.db.pendings.add(pendable)
         # Set up some local variables for translation interpolation.
         domain = IDomain(self._context)
         domain_name = _(domain.domain_name)
@@ -96,8 +95,7 @@
     def confirm(self, token):
         """See `IUserRegistrar`."""
         # For convenience
-        pendingdb = IPending(config.db)
-        pendable = pendingdb.confirm(token)
+        pendable = config.db.pendings.confirm(token)
         if pendable is None:
             return False
         missing = object()
@@ -114,7 +112,7 @@
         # We are going to end up with an IAddress for the verified address
         # and an IUser linked to this IAddress.  See if any of these objects
         # currently exist in our database.
-        usermgr = config.user_manager
+        usermgr = config.db.user_manager
         addr = usermgr.get_address(address)
         user = usermgr.get_user(address)
         # If there is neither an address nor a user matching the confirmed
@@ -144,6 +142,5 @@
         return True
 
     def discard(self, token):
-        pendingdb = IPending(config.db)
         # Throw the record away.
-        pendingdb.confirm(token)
+        config.db.pendings.confirm(token)

=== modified file 'Mailman/database/__init__.py'
--- a/Mailman/database/__init__.py      2007-08-01 20:11:08 +0000
+++ b/Mailman/database/__init__.py      2007-08-02 14:47:56 +0000
@@ -50,6 +50,7 @@
         self.list_manager = None
         self.user_manager = None
         self.message_store = None
+        self.pendings = None
 
     def initialize(self):
         from Mailman.LockFile import LockFile
@@ -63,13 +64,8 @@
         self.list_manager = ListManager()
         self.user_manager = UserManager()
         self.message_store = MessageStore()
+        self.pendings = Pendings()
         self.flush()
 
     def flush(self):
         objectstore.flush()
-
-    def __conform__(self, protocol):
-        if protocol is IPending:
-            return Pendings()
-        # Let the rest of the adaptation machinery take a crack at it.
-        return None

=== modified file 'Mailman/docs/ack-headers.txt'
--- a/Mailman/docs/ack-headers.txt      2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/ack-headers.txt      2007-08-02 14:47:56 +0000
@@ -12,7 +12,7 @@
     >>> from Mailman.Handlers.CookHeaders import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.subject_prefix = u''
     >>> flush()
 

=== modified file 'Mailman/docs/acknowledge.txt'
--- a/Mailman/docs/acknowledge.txt      2007-07-17 03:55:49 +0000
+++ b/Mailman/docs/acknowledge.txt      2007-08-02 14:47:56 +0000
@@ -10,7 +10,7 @@
     >>> from Mailman.Handlers.Acknowledge import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.real_name = 'XTest'
     >>> mlist.preferred_language = 'en'
     >>> # XXX This will almost certainly change once we've worked out the web
@@ -27,8 +27,9 @@
 
 Subscribe a user to the mailing list.
 
+    >>> usermgr = config.db.user_manager
     >>> from Mailman.constants import MemberRole
-    >>> user_1 = config.user_manager.create_user('[EMAIL PROTECTED]')
+    >>> user_1 = usermgr.create_user('[EMAIL PROTECTED]')
     >>> address_1 = list(user_1.addresses)[0]
     >>> address_1.subscribe(mlist, MemberRole.member)
     <Member: [EMAIL PROTECTED] on [EMAIL PROTECTED] as MemberRole.member>
@@ -77,7 +78,7 @@
 that sender is a member but not one who has requested acknowledgments, none
 will be sent.
 
-    >>> user_2 = config.user_manager.create_user('[EMAIL PROTECTED]')
+    >>> user_2 = usermgr.create_user('[EMAIL PROTECTED]')
     >>> address_2 = list(user_2.addresses)[0]
     >>> address_2.subscribe(mlist, MemberRole.member)
     <Member: [EMAIL PROTECTED] on [EMAIL PROTECTED] as MemberRole.member>

=== modified file 'Mailman/docs/addresses.txt'
--- a/Mailman/docs/addresses.txt        2007-08-01 21:05:06 +0000
+++ b/Mailman/docs/addresses.txt        2007-08-02 14:47:56 +0000
@@ -8,7 +8,7 @@
 
     >>> from Mailman.database import flush
     >>> from Mailman.configuration import config
-    >>> mgr = config.user_manager
+    >>> usermgr = config.db.user_manager
 
 
 Creating addresses
@@ -17,14 +17,14 @@
 Addresses are created directly through the user manager, which starts out with
 no addresses.
 
-    >>> sorted(address.address for address in mgr.addresses)
+    >>> sorted(address.address for address in usermgr.addresses)
     []
 
 Creating an unlinked email address is straightforward.
 
-    >>> address_1 = mgr.create_address('[EMAIL PROTECTED]')
+    >>> address_1 = usermgr.create_address('[EMAIL PROTECTED]')
     >>> flush()
-    >>> sorted(address.address for address in mgr.addresses)
+    >>> sorted(address.address for address in usermgr.addresses)
     ['[EMAIL PROTECTED]']
 
 However, such addresses have no real name.
@@ -34,11 +34,11 @@
 
 You can also create an email address object with a real name.
 
-    >>> address_2 = mgr.create_address('[EMAIL PROTECTED]', 'Ben Person')
+    >>> address_2 = usermgr.create_address('[EMAIL PROTECTED]', 'Ben Person')
     >>> flush()
-    >>> sorted(address.address for address in mgr.addresses)
+    >>> sorted(address.address for address in usermgr.addresses)
     ['[EMAIL PROTECTED]', '[EMAIL PROTECTED]']
-    >>> sorted(address.real_name for address in mgr.addresses)
+    >>> sorted(address.real_name for address in usermgr.addresses)
     ['', 'Ben Person']
 
 The str() of the address is the RFC 2822 preferred originator format, while
@@ -53,34 +53,34 @@
 
     >>> address_1.real_name = 'Anne Person'
     >>> flush()
-    >>> sorted(address.real_name for address in mgr.addresses)
+    >>> sorted(address.real_name for address in usermgr.addresses)
     ['Anne Person', 'Ben Person']
 
 These addresses are not linked to users, and can be seen by searching the user
 manager for an associated user.
 
-    >>> print mgr.get_user('[EMAIL PROTECTED]')
+    >>> print usermgr.get_user('[EMAIL PROTECTED]')
     None
-    >>> print mgr.get_user('[EMAIL PROTECTED]')
+    >>> print usermgr.get_user('[EMAIL PROTECTED]')
     None
 
 You can create email addresses that are linked to users by using a different
 interface.
 
-    >>> user_1 = mgr.create_user('[EMAIL PROTECTED]', 'Claire Person')
+    >>> user_1 = usermgr.create_user('[EMAIL PROTECTED]', 'Claire Person')
     >>> flush()
-    >>> sorted(address.address for address in mgr.addresses)
+    >>> sorted(address.address for address in usermgr.addresses)
     ['[EMAIL PROTECTED]', '[EMAIL PROTECTED]', '[EMAIL PROTECTED]']
-    >>> sorted(address.real_name for address in mgr.addresses)
+    >>> sorted(address.real_name for address in usermgr.addresses)
     ['Anne Person', 'Ben Person', 'Claire Person']
 
 And now you can find the associated user.
 
-    >>> print mgr.get_user('[EMAIL PROTECTED]')
-    None
-    >>> print mgr.get_user('[EMAIL PROTECTED]')
-    None
-    >>> mgr.get_user('[EMAIL PROTECTED]')
+    >>> print usermgr.get_user('[EMAIL PROTECTED]')
+    None
+    >>> print usermgr.get_user('[EMAIL PROTECTED]')
+    None
+    >>> usermgr.get_user('[EMAIL PROTECTED]')
     <User "Claire Person" at ...>
 
 
@@ -89,11 +89,11 @@
 
 You can remove an unlinked address from the usre manager.
 
-    >>> mgr.delete_address(address_1)
+    >>> usermgr.delete_address(address_1)
     >>> flush()
-    >>> sorted(address.address for address in mgr.addresses)
+    >>> sorted(address.address for address in usermgr.addresses)
     ['[EMAIL PROTECTED]', '[EMAIL PROTECTED]']
-    >>> sorted(address.real_name for address in mgr.addresses)
+    >>> sorted(address.real_name for address in usermgr.addresses)
     ['Ben Person', 'Claire Person']
 
 Deleting a linked address does not delete the user, but it does unlink the
@@ -104,13 +104,13 @@
     >>> user_1.controls('[EMAIL PROTECTED]')
     True
     >>> address_3 = list(user_1.addresses)[0]
-    >>> mgr.delete_address(address_3)
+    >>> usermgr.delete_address(address_3)
     >>> flush()
     >>> sorted(address.address for address in user_1.addresses)
     []
     >>> user_1.controls('[EMAIL PROTECTED]')
     False
-    >>> sorted(address.address for address in mgr.addresses)
+    >>> sorted(address.address for address in usermgr.addresses)
     ['[EMAIL PROTECTED]']
 
 
@@ -120,7 +120,7 @@
 Addresses have two dates, the date the address was registered on and the date
 the address was validated on.  Neither date is set by default.
 
-    >>> address_4 = mgr.create_address('[EMAIL PROTECTED]', 'Dan Person')
+    >>> address_4 = usermgr.create_address('[EMAIL PROTECTED]', 'Dan Person')
     >>> flush()
     >>> print address_4.registered_on
     None
@@ -153,8 +153,8 @@
 Addresses get subscribed to mailing lists, not users.  When the address is
 subscribed, a role is specified.
 
-    >>> address_5 = mgr.create_address('[EMAIL PROTECTED]', 'Elly Person')
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> address_5 = usermgr.create_address('[EMAIL PROTECTED]', 'Elly Person')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> from Mailman.constants import MemberRole
     >>> address_5.subscribe(mlist, MemberRole.owner)
     <Member: Elly Person <[EMAIL PROTECTED]> on
@@ -192,7 +192,8 @@
 when sending the user a message, but it treats addresses that are different in
 case equivalently in all other situations.
 
-    >>> address_6 = mgr.create_address('[EMAIL PROTECTED]', 'Frank Person')
+    >>> address_6 = usermgr.create_address(
+    ...     '[EMAIL PROTECTED]', 'Frank Person')
     >>> flush()
 
 The str() of such an address prints the RFC 2822 preferred originator format
@@ -216,15 +217,15 @@
 Because addresses are case-insensitive for all other purposes, you cannot
 create an address that differs only in case.
 
-    >>> mgr.create_address('[EMAIL PROTECTED]')
-    Traceback (most recent call last):
-    ...
-    ExistingAddressError: [EMAIL PROTECTED]
-    >>> mgr.create_address('[EMAIL PROTECTED]')
-    Traceback (most recent call last):
-    ...
-    ExistingAddressError: [EMAIL PROTECTED]
-    >>> mgr.create_address('[EMAIL PROTECTED]')
+    >>> usermgr.create_address('[EMAIL PROTECTED]')
+    Traceback (most recent call last):
+    ...
+    ExistingAddressError: [EMAIL PROTECTED]
+    >>> usermgr.create_address('[EMAIL PROTECTED]')
+    Traceback (most recent call last):
+    ...
+    ExistingAddressError: [EMAIL PROTECTED]
+    >>> usermgr.create_address('[EMAIL PROTECTED]')
     Traceback (most recent call last):
     ...
     ExistingAddressError: [EMAIL PROTECTED]
@@ -232,7 +233,7 @@
 You can get the address using either the lower cased version or case-preserved
 version.  In fact, searching for an address is case insensitive.
 
-    >>> mgr.get_address('[EMAIL PROTECTED]').address
+    >>> usermgr.get_address('[EMAIL PROTECTED]').address
     '[EMAIL PROTECTED]'
-    >>> mgr.get_address('[EMAIL PROTECTED]').address
+    >>> usermgr.get_address('[EMAIL PROTECTED]').address
     '[EMAIL PROTECTED]'

=== modified file 'Mailman/docs/after-delivery.txt'
--- a/Mailman/docs/after-delivery.txt   2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/after-delivery.txt   2007-08-02 14:47:56 +0000
@@ -11,7 +11,7 @@
     >>> from Mailman.Handlers.AfterDelivery import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> post_time = datetime.datetime.now() - datetime.timedelta(minutes=10)
     >>> mlist.last_post_time = post_time
     >>> mlist.post_id = 10

=== modified file 'Mailman/docs/antispam.txt'
--- a/Mailman/docs/antispam.txt 2007-07-05 14:29:40 +0000
+++ b/Mailman/docs/antispam.txt 2007-08-02 14:47:56 +0000
@@ -15,7 +15,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
 
 

=== modified file 'Mailman/docs/archives.txt'
--- a/Mailman/docs/archives.txt 2007-07-22 23:52:34 +0000
+++ b/Mailman/docs/archives.txt 2007-08-02 14:47:56 +0000
@@ -13,7 +13,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = 'en'
     >>> flush()
     >>> switchboard = Switchboard(config.ARCHQUEUE_DIR)

=== modified file 'Mailman/docs/avoid-duplicates.txt'
--- a/Mailman/docs/avoid-duplicates.txt 2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/avoid-duplicates.txt 2007-08-02 14:47:56 +0000
@@ -11,14 +11,14 @@
     >>> from Mailman.Handlers.AvoidDuplicates import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
 
 Create some members we're going to use.
 
     >>> from Mailman.constants import MemberRole
-    >>> address_a = config.user_manager.create_address('[EMAIL PROTECTED]')
-    >>> address_b = config.user_manager.create_address('[EMAIL PROTECTED]')
+    >>> address_a = config.db.user_manager.create_address('[EMAIL PROTECTED]')
+    >>> address_b = config.db.user_manager.create_address('[EMAIL PROTECTED]')
     >>> member_a = address_a.subscribe(mlist, MemberRole.member)
     >>> member_b = address_b.subscribe(mlist, MemberRole.member)
     >>> flush()

=== modified file 'Mailman/docs/bounces.txt'
--- a/Mailman/docs/bounces.txt  2007-07-02 03:31:21 +0000
+++ b/Mailman/docs/bounces.txt  2007-08-02 14:47:56 +0000
@@ -15,7 +15,7 @@
 
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = u'en'
     >>> flush()
 

=== modified file 'Mailman/docs/calc-recips.txt'
--- a/Mailman/docs/calc-recips.txt      2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/calc-recips.txt      2007-08-02 14:47:56 +0000
@@ -10,19 +10,20 @@
     >>> from Mailman.Handlers.CalcRecips import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
 
 
 Recipients are calculate from the list members, so add a bunch of members to
 start out with.  First, create a bunch of addresses...
 
-    >>> address_a = config.user_manager.create_address('[EMAIL PROTECTED]')
-    >>> address_b = config.user_manager.create_address('[EMAIL PROTECTED]')
-    >>> address_c = config.user_manager.create_address('[EMAIL PROTECTED]')
-    >>> address_d = config.user_manager.create_address('[EMAIL PROTECTED]')
-    >>> address_e = config.user_manager.create_address('[EMAIL PROTECTED]')
-    >>> address_f = config.user_manager.create_address('[EMAIL PROTECTED]')
+    >>> usermgr = config.db.user_manager
+    >>> address_a = usermgr.create_address('[EMAIL PROTECTED]')
+    >>> address_b = usermgr.create_address('[EMAIL PROTECTED]')
+    >>> address_c = usermgr.create_address('[EMAIL PROTECTED]')
+    >>> address_d = usermgr.create_address('[EMAIL PROTECTED]')
+    >>> address_e = usermgr.create_address('[EMAIL PROTECTED]')
+    >>> address_f = usermgr.create_address('[EMAIL PROTECTED]')
 
 ...then subscribe these addresses to the mailing list as members...
 

=== modified file 'Mailman/docs/cleanse.txt'
--- a/Mailman/docs/cleanse.txt  2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/cleanse.txt  2007-08-02 14:47:56 +0000
@@ -10,7 +10,7 @@
     >>> from Mailman.Handlers.Cleanse import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
 
 Headers such as Approved, Approve, and Urgent are used to grant special

=== modified file 'Mailman/docs/cook-headers.txt'
--- a/Mailman/docs/cook-headers.txt     2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/cook-headers.txt     2007-08-02 14:47:56 +0000
@@ -12,7 +12,7 @@
     >>> from Mailman.Handlers.CookHeaders import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.subject_prefix = u''
     >>> mlist.include_list_post_header = False
     >>> mlist.archive = True

=== modified file 'Mailman/docs/decorate.txt'
--- a/Mailman/docs/decorate.txt 2007-05-31 05:01:00 +0000
+++ b/Mailman/docs/decorate.txt 2007-08-02 14:47:56 +0000
@@ -9,7 +9,7 @@
     >>> from Mailman.Handlers.Decorate import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
     >>> msg_text = """\
     ... From: [EMAIL PROTECTED]

=== modified file 'Mailman/docs/digests.txt'
--- a/Mailman/docs/digests.txt  2007-07-17 21:39:53 +0000
+++ b/Mailman/docs/digests.txt  2007-08-02 14:47:56 +0000
@@ -12,7 +12,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = 'en'
     >>> mlist.web_page_url = 'http://www.example.com/'
     >>> mlist.real_name = 'XTest'

=== modified file 'Mailman/docs/file-recips.txt'
--- a/Mailman/docs/file-recips.txt      2007-07-02 22:45:13 +0000
+++ b/Mailman/docs/file-recips.txt      2007-08-02 14:47:56 +0000
@@ -10,7 +10,7 @@
     >>> from Mailman.Handlers.FileRecips import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
 
 
@@ -84,7 +84,7 @@
 in the recipients list.
 
     >>> from Mailman.constants import MemberRole
-    >>> address_1 = config.user_manager.create_address('[EMAIL PROTECTED]')
+    >>> address_1 = config.db.user_manager.create_address('[EMAIL PROTECTED]')
     >>> address_1.subscribe(mlist, MemberRole.member)
     <Member: [EMAIL PROTECTED] on [EMAIL PROTECTED] as MemberRole.member>
     >>> flush()

=== modified file 'Mailman/docs/filtering.txt'
--- a/Mailman/docs/filtering.txt        2007-07-06 03:01:23 +0000
+++ b/Mailman/docs/filtering.txt        2007-08-02 14:47:56 +0000
@@ -11,7 +11,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = 'en'
     >>> flush()
 

=== modified file 'Mailman/docs/hold.txt'
--- a/Mailman/docs/hold.txt     2007-08-01 21:05:06 +0000
+++ b/Mailman/docs/hold.txt     2007-08-02 14:47:56 +0000
@@ -11,7 +11,7 @@
     >>> from Mailman.Queue.Switchboard import Switchboard
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = 'en'
     >>> mlist.real_name = '_XTest'
     >>> # XXX This will almost certainly change once we've worked out the web
@@ -353,8 +353,7 @@
     ...     if mo:
     ...         cookie = mo.group('cookie')
     ...         break
-    >>> from Mailman.interfaces import IPending
-    >>> data = IPending(config.db).confirm(cookie)
+    >>> data = config.db.pendings.confirm(cookie)
     >>> sorted(data.items())
     [('id', '...'), ('type', 'held message')]
     >>> filename = '[EMAIL PROTECTED]' % data['id']

=== modified file 'Mailman/docs/listmanager.txt'
--- a/Mailman/docs/listmanager.txt      2007-06-09 22:16:29 +0000
+++ b/Mailman/docs/listmanager.txt      2007-08-02 14:47:56 +0000
@@ -9,9 +9,9 @@
     >>> from Mailman.database import flush
     >>> from Mailman.configuration import config
     >>> from Mailman.interfaces import IListManager
-    >>> IListManager.providedBy(config.list_manager)
+    >>> listmgr = config.db.list_manager
+    >>> IListManager.providedBy(listmgr)
     True
-    >>> mgr = config.list_manager
 
 
 Creating a mailing list
@@ -20,7 +20,7 @@
 Creating the list returns the newly created IMailList object.
 
     >>> from Mailman.interfaces import IMailingList
-    >>> mlist = mgr.create('[EMAIL PROTECTED]')
+    >>> mlist = listmgr.create('[EMAIL PROTECTED]')
     >>> flush()
     >>> IMailingList.providedBy(mlist)
     True
@@ -45,7 +45,7 @@
 If you try to create a mailing list with the same name as an existing list,
 you will get an exception.
 
-    >>> mlist_dup = mgr.create('[EMAIL PROTECTED]')
+    >>> mlist_dup = listmgr.create('[EMAIL PROTECTED]')
     Traceback (most recent call last):
     ...
     MMListAlreadyExistsError: [EMAIL PROTECTED]
@@ -56,9 +56,9 @@
 
 Use the list manager to delete a mailing list.
 
-    >>> mgr.delete(mlist)
+    >>> listmgr.delete(mlist)
     >>> flush()
-    >>> sorted(mgr.names)
+    >>> sorted(listmgr.names)
     []
 
 Attempting to access attributes of the deleted mailing list raises an
@@ -71,7 +71,7 @@
 
 After deleting the list, you can create it again.
 
-    >>> mlist = mgr.create('[EMAIL PROTECTED]')
+    >>> mlist = listmgr.create('[EMAIL PROTECTED]')
     >>> flush()
     >>> mlist.fqdn_listname
     '[EMAIL PROTECTED]'
@@ -83,14 +83,14 @@
 When a mailing list exists, you can ask the list manager for it and you will
 always get the same object back.
 
-    >>> mlist_2 = mgr.get('[EMAIL PROTECTED]')
+    >>> mlist_2 = listmgr.get('[EMAIL PROTECTED]')
     >>> mlist_2 is mlist
     True
 
 Don't try to get a list that doesn't exist yet though, or you will get an
 exception.
 
-    >>> mgr.get('[EMAIL PROTECTED]')
+    >>> listmgr.get('[EMAIL PROTECTED]')
     Traceback (most recent call last):
     ...
     MMUnknownListError: [EMAIL PROTECTED]
@@ -102,18 +102,18 @@
 Once you've created a bunch of mailing lists, you can use the list manager to
 iterate over either the list objects, or the list names.
 
-    >>> mlist_3 = mgr.create('[EMAIL PROTECTED]')
-    >>> mlist_4 = mgr.create('[EMAIL PROTECTED]')
+    >>> mlist_3 = listmgr.create('[EMAIL PROTECTED]')
+    >>> mlist_4 = listmgr.create('[EMAIL PROTECTED]')
     >>> flush()
-    >>> sorted(mgr.names)
+    >>> sorted(listmgr.names)
     ['[EMAIL PROTECTED]', '[EMAIL PROTECTED]', '[EMAIL PROTECTED]']
-    >>> sorted(m.fqdn_listname for m in mgr.mailing_lists)
+    >>> sorted(m.fqdn_listname for m in listmgr.mailing_lists)
     ['[EMAIL PROTECTED]', '[EMAIL PROTECTED]', '[EMAIL PROTECTED]']
 
 
 Cleaning up
 -----------
 
-    >>> for mlist in mgr.mailing_lists:
-    ...     mgr.delete(mlist)
+    >>> for mlist in listmgr.mailing_lists:
+    ...     listmgr.delete(mlist)
     >>> flush()

=== modified file 'Mailman/docs/membership.txt'
--- a/Mailman/docs/membership.txt       2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/membership.txt       2007-08-02 14:47:56 +0000
@@ -16,7 +16,7 @@
 
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
     >>> mlist
     <mailing list "[EMAIL PROTECTED]" (unlocked) at ...>
@@ -65,8 +65,8 @@
 assigning roles to users.  First we have to create the user, because there are
 no users in the user database yet.
 
-    >>> user_1 = config.user_manager.create_user(
-    ...     '[EMAIL PROTECTED]', 'Anne Person')
+    >>> usermgr = config.db.user_manager
+    >>> user_1 = usermgr.create_user('[EMAIL PROTECTED]', 'Anne Person')
     >>> flush()
     >>> user_1.real_name
     'Anne Person'
@@ -104,8 +104,7 @@
 We can add Ben as a moderator of the list, by creating a different member role
 for him.
 
-    >>> user_2 = config.user_manager.create_user(
-    ...     '[EMAIL PROTECTED]', 'Ben Person')
+    >>> user_2 = usermgr.create_user('[EMAIL PROTECTED]', 'Ben Person')
     >>> flush()
     >>> user_2.real_name
     'Ben Person'
@@ -144,8 +143,7 @@
 preference, then the user's preference, then the list's preference.  Start
 without any member preference to see the system defaults.
 
-    >>> user_3 = config.user_manager.create_user(
-    ...     '[EMAIL PROTECTED]', 'Claire Person')
+    >>> user_3 = usermgr.create_user('[EMAIL PROTECTED]', 'Claire Person')
     >>> flush()
     >>> user_3.real_name
     'Claire Person'

=== modified file 'Mailman/docs/message.txt'
--- a/Mailman/docs/message.txt  2007-07-02 03:31:21 +0000
+++ b/Mailman/docs/message.txt  2007-08-02 14:47:56 +0000
@@ -14,7 +14,7 @@
 
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = u'en'
     >>> flush()
 

=== modified file 'Mailman/docs/messagestore.txt'
--- a/Mailman/docs/messagestore.txt     2007-07-22 23:52:34 +0000
+++ b/Mailman/docs/messagestore.txt     2007-08-02 14:47:56 +0000
@@ -13,7 +13,7 @@
     >>> from email import message_from_string
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> store = config.message_store
+    >>> store = config.db.message_store
 
 If you try to add a message to the store which is missing either the
 Message-ID header or the Date header, you will get a ValueError.

=== modified file 'Mailman/docs/mlist-addresses.txt'
--- a/Mailman/docs/mlist-addresses.txt  2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/mlist-addresses.txt  2007-08-02 14:47:56 +0000
@@ -7,7 +7,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.interfaces import IMailingListAddresses
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
     >>> IMailingListAddresses.providedBy(mlist)
     True

=== modified file 'Mailman/docs/news-runner.txt'
--- a/Mailman/docs/news-runner.txt      2007-08-01 21:05:06 +0000
+++ b/Mailman/docs/news-runner.txt      2007-08-02 14:47:56 +0000
@@ -11,7 +11,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from Mailman.Queue.NewsRunner import prepare_message
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.linked_newsgroup = 'comp.lang.python'
     >>> flush()
 

=== modified file 'Mailman/docs/nntp.txt'
--- a/Mailman/docs/nntp.txt     2007-07-06 04:08:56 +0000
+++ b/Mailman/docs/nntp.txt     2007-08-02 14:47:56 +0000
@@ -11,7 +11,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = 'en'
     >>> flush()
     >>> switchboard = Switchboard(config.NEWSQUEUE_DIR)

=== modified file 'Mailman/docs/outgoing.txt'
--- a/Mailman/docs/outgoing.txt 2007-07-08 11:47:03 +0000
+++ b/Mailman/docs/outgoing.txt 2007-08-02 14:47:56 +0000
@@ -15,7 +15,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
     >>> switchboard = Switchboard(config.OUTQUEUE_DIR)
 

=== modified file 'Mailman/docs/pending.txt'
--- a/Mailman/docs/pending.txt  2007-08-01 21:05:06 +0000
+++ b/Mailman/docs/pending.txt  2007-08-02 14:47:56 +0000
@@ -15,7 +15,7 @@
 In order to pend an event, you first need a pending database, which is
 available by adapting the list manager.
 
-    >>> pendingdb = IPending(config.db)
+    >>> pendingdb = config.db.pendings
     >>> verifyObject(IPending, pendingdb)
     True
 

=== modified file 'Mailman/docs/registration.txt'
--- a/Mailman/docs/registration.txt     2007-08-01 20:11:08 +0000
+++ b/Mailman/docs/registration.txt     2007-08-02 14:47:56 +0000
@@ -112,7 +112,7 @@
 
 There should be no records in the user manager for this address yet.
 
-    >>> usermgr = config.user_manager
+    >>> usermgr = config.db.user_manager
     >>> print usermgr.get_user('[EMAIL PROTECTED]')
     None
     >>> print usermgr.get_address('[EMAIL PROTECTED]')
@@ -120,8 +120,7 @@
 
 But this address is waiting for confirmation.
 
-    >>> from Mailman.interfaces import IPending
-    >>> pendingdb = IPending(config.db)
+    >>> pendingdb = config.db.pendings
     >>> sorted(pendingdb.confirm(token, expunge=False).items())
     [('address', '[EMAIL PROTECTED]'),
      ('real_name', 'Anne Person'),
@@ -358,8 +357,7 @@
 that doesn't match a registration even, you will get None.  However, the
 pending even matched with that token will still be removed.
 
-    >>> from Mailman.interfaces import IPendable, IPending
-    >>> pendingdb = IPending(config.db)
+    >>> from Mailman.interfaces import IPendable
     >>> class SimplePendable(dict):
     ...     implements(IPendable)
     >>> pendable = SimplePendable(type='foo', bar='baz')

=== modified file 'Mailman/docs/reply-to.txt'
--- a/Mailman/docs/reply-to.txt 2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/reply-to.txt 2007-08-02 14:47:56 +0000
@@ -12,7 +12,7 @@
     >>> from Mailman.Handlers.CookHeaders import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.subject_prefix = u''
     >>> flush()
 

=== modified file 'Mailman/docs/replybot.txt'
--- a/Mailman/docs/replybot.txt 2007-06-28 05:11:50 +0000
+++ b/Mailman/docs/replybot.txt 2007-08-02 14:47:56 +0000
@@ -11,7 +11,7 @@
     >>> from Mailman.Message import Message
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.real_name = 'XTest'
     >>> flush()
 

=== modified file 'Mailman/docs/runner.txt'
--- a/Mailman/docs/runner.txt   2007-06-28 05:11:50 +0000
+++ b/Mailman/docs/runner.txt   2007-08-02 14:47:56 +0000
@@ -21,7 +21,7 @@
     >>> from Mailman.Queue.Switchboard import Switchboard
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = 'en'
     >>> flush()
 

=== modified file 'Mailman/docs/scrubber.txt'
--- a/Mailman/docs/scrubber.txt 2007-07-12 04:12:45 +0000
+++ b/Mailman/docs/scrubber.txt 2007-08-02 14:47:56 +0000
@@ -11,7 +11,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.preferred_language = 'en'
     >>> flush()
 

=== modified file 'Mailman/docs/subject-munging.txt'
--- a/Mailman/docs/subject-munging.txt  2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/subject-munging.txt  2007-08-02 14:47:56 +0000
@@ -12,7 +12,7 @@
     >>> from Mailman.Handlers.CookHeaders import process
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> mlist.subject_prefix = u''
     >>> flush()
 

=== modified file 'Mailman/docs/tagger.txt'
--- a/Mailman/docs/tagger.txt   2007-07-04 04:16:48 +0000
+++ b/Mailman/docs/tagger.txt   2007-08-02 14:47:56 +0000
@@ -14,7 +14,7 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from email import message_from_string
-    >>> mlist = config.list_manager.create('[EMAIL PROTECTED]')
+    >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
 
 Topics must be enabled for Mailman to do any topic matching, even if topics
 are defined.

=== modified file 'Mailman/docs/usermanager.txt'
--- a/Mailman/docs/usermanager.txt      2007-06-22 21:15:03 +0000
+++ b/Mailman/docs/usermanager.txt      2007-08-02 14:47:56 +0000
@@ -9,8 +9,9 @@
     >>> from Mailman.configuration import config
     >>> from Mailman.database import flush
     >>> from Mailman.interfaces import IUserManager
-    >>> mgr = config.user_manager
-    >>> IUserManager.providedBy(mgr)
+    >>> from zope.interface.verify import verifyObject
+    >>> usermgr = config.db.user_manager
+    >>> verifyObject(IUserManager, usermgr)
     True
 
 
@@ -23,9 +24,9 @@
 have a password.
 
     >>> from Mailman.interfaces import IUser
-    >>> user = mgr.create_user()
+    >>> user = usermgr.create_user()
     >>> flush()
-    >>> IUser.providedBy(user)
+    >>> verifyObject(IUser, user)
     True
     >>> sorted(address.address for address in user.addresses)
     []
@@ -43,56 +44,56 @@
 
     >>> user.real_name = 'Anne Person'
     >>> flush()
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['Anne Person']
 
 A user can be assigned a password.
 
     >>> user.password = 'secret'
     >>> flush()
-    >>> sorted(user.password for user in mgr.users)
+    >>> sorted(user.password for user in usermgr.users)
     ['secret']
 
 You can also create a user with an address to start out with.
 
-    >>> user_2 = mgr.create_user('[EMAIL PROTECTED]')
+    >>> user_2 = usermgr.create_user('[EMAIL PROTECTED]')
     >>> flush()
-    >>> IUser.providedBy(user_2)
+    >>> verifyObject(IUser, user_2)
     True
     >>> sorted(address.address for address in user_2.addresses)
     ['[EMAIL PROTECTED]']
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['', 'Anne Person']
 
 As above, you can assign a real name to such users.
 
     >>> user_2.real_name = 'Ben Person'
     >>> flush()
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['Anne Person', 'Ben Person']
 
 You can also create a user with just a real name.
 
-    >>> user_3 = mgr.create_user(real_name='Claire Person')
+    >>> user_3 = usermgr.create_user(real_name='Claire Person')
     >>> flush()
-    >>> IUser.providedBy(user_3)
+    >>> verifyObject(IUser, user_3)
     True
     >>> sorted(address.address for address in user.addresses)
     []
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['Anne Person', 'Ben Person', 'Claire Person']
 
 Finally, you can create a user with both an address and a real name.
 
-    >>> user_4 = mgr.create_user('[EMAIL PROTECTED]', 'Dan Person')
+    >>> user_4 = usermgr.create_user('[EMAIL PROTECTED]', 'Dan Person')
     >>> flush()
-    >>> IUser.providedBy(user_3)
+    >>> verifyObject(IUser, user_3)
     True
     >>> sorted(address.address for address in user_4.addresses)
     ['[EMAIL PROTECTED]']
     >>> sorted(address.real_name for address in user_4.addresses)
     ['Dan Person']
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['Anne Person', 'Ben Person', 'Claire Person', 'Dan Person']
 
 
@@ -102,9 +103,9 @@
 You delete users by going through the user manager.  The deleted user is no
 longer available through the user manager iterator.
 
-    >>> mgr.delete_user(user)
+    >>> usermgr.delete_user(user)
     >>> flush()
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['Ben Person', 'Claire Person', 'Dan Person']
 
 
@@ -117,7 +118,7 @@
 object.
 
     >>> address = list(user_4.addresses)[0]
-    >>> found_user = mgr.get_user(address.address)
+    >>> found_user = usermgr.get_user(address.address)
     >>> found_user
     <User "Dan Person" at ...>
     >>> found_user is user_4
@@ -126,9 +127,9 @@
 If the address is not in the user database or does not have a user associated
 with it, you will get None back.
 
-    >>> print mgr.get_user('[EMAIL PROTECTED]')
+    >>> print usermgr.get_user('[EMAIL PROTECTED]')
     None
     >>> user_4.unlink(address)
     >>> flush()
-    >>> print mgr.get_user(address.address)
+    >>> print usermgr.get_user(address.address)
     None

=== modified file 'Mailman/docs/users.txt'
--- a/Mailman/docs/users.txt    2007-07-01 15:51:09 +0000
+++ b/Mailman/docs/users.txt    2007-08-02 14:47:56 +0000
@@ -9,7 +9,7 @@
 
     >>> from Mailman.database import flush
     >>> from Mailman.configuration import config
-    >>> mgr = config.user_manager
+    >>> usermgr = config.db.user_manager
 
 
 User data
@@ -17,13 +17,13 @@
 
 Users may have a real name and a password.
 
-    >>> user_1 = mgr.create_user()
+    >>> user_1 = usermgr.create_user()
     >>> user_1.password = 'my password'
     >>> user_1.real_name = 'Zoe Person'
     >>> flush()
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['Zoe Person']
-    >>> sorted(user.password for user in mgr.users)
+    >>> sorted(user.password for user in usermgr.users)
     ['my password']
 
 The password and real name can be changed at any time.
@@ -31,9 +31,9 @@
     >>> user_1.real_name = 'Zoe X. Person'
     >>> user_1.password = 'another password'
     >>> flush()
-    >>> sorted(user.real_name for user in mgr.users)
+    >>> sorted(user.real_name for user in usermgr.users)
     ['Zoe X. Person']
-    >>> sorted(user.password for user in mgr.users)
+    >>> sorted(user.password for user in usermgr.users)
     ['another password']
 
 
@@ -59,7 +59,7 @@
 
 You can also create the address separately and then link it to the user.
 
-    >>> address_1 = mgr.create_address('[EMAIL PROTECTED]')
+    >>> address_1 = usermgr.create_address('[EMAIL PROTECTED]')
     >>> user_1.link(address_1)
     >>> flush()
     >>> sorted(address.address for address in user_1.addresses)
@@ -69,7 +69,7 @@
 
 But don't try to link an address to more than one user.
 
-    >>> another_user = mgr.create_user()
+    >>> another_user = usermgr.create_user()
     >>> another_user.link(address_1)
     Traceback (most recent call last):
     ...
@@ -85,13 +85,13 @@
 Given a text email address, the user manager can find the user that controls
 that address.
 
-    >>> mgr.get_user('[EMAIL PROTECTED]') is user_1
-    True
-    >>> mgr.get_user('[EMAIL PROTECTED]') is user_1
-    True
-    >>> mgr.get_user('[EMAIL PROTECTED]') is user_1
-    True
-    >>> print mgr.get_user('[EMAIL PROTECTED]')
+    >>> usermgr.get_user('[EMAIL PROTECTED]') is user_1
+    True
+    >>> usermgr.get_user('[EMAIL PROTECTED]') is user_1
+    True
+    >>> usermgr.get_user('[EMAIL PROTECTED]') is user_1
+    True
+    >>> print usermgr.get_user('[EMAIL PROTECTED]')
     None
 
 Addresses can also be unlinked from a user.
@@ -99,7 +99,7 @@
     >>> user_1.unlink(address_1)
     >>> user_1.controls('[EMAIL PROTECTED]')
     False
-    >>> print mgr.get_user('[EMAIL PROTECTED]')
+    >>> print usermgr.get_user('[EMAIL PROTECTED]')
     None
 
 But don't try to unlink the address from a user it's not linked to.

=== modified file 'Mailman/initialize.py'
--- a/Mailman/initialize.py     2007-08-01 20:11:08 +0000
+++ b/Mailman/initialize.py     2007-08-02 14:47:56 +0000
@@ -34,10 +34,7 @@
 import Mailman.ext
 import Mailman.loginit
 
-from Mailman.interfaces import (
-    IDatabase, IListManager, IMessageStore, IUserManager)
-
-DOT = '.'
+from Mailman.interfaces import IDatabase
 
 
 
@@ -94,12 +91,6 @@
     verifyObject(IDatabase, db)
     db.initialize()
     Mailman.configuration.config.db = db
-    verifyObject(IListManager, db.list_manager)
-    Mailman.configuration.config.list_manager = db.list_manager
-    verifyObject(IUserManager, db.user_manager)
-    Mailman.configuration.config.user_manager = db.user_manager
-    verifyObject(IMessageStore, db.message_store)
-    Mailman.configuration.config.message_store = db.message_store
 
 
 def initialize(config=None, propagate_logs=False):

=== modified file 'Mailman/interfaces/database.py'
--- a/Mailman/interfaces/database.py    2007-08-01 20:11:08 +0000
+++ b/Mailman/interfaces/database.py    2007-08-02 14:47:56 +0000
@@ -49,3 +49,6 @@
 
     message_store = Attribute(
         """The IMessageStore instance provided by the database layer.""")
+
+    pendings = Attribute(
+        """The IPending instance provided by the database layer.""")

=== modified file 'Mailman/tests/test_documentation.py'
--- a/Mailman/tests/test_documentation.py       2007-07-11 02:39:57 +0000
+++ b/Mailman/tests/test_documentation.py       2007-08-02 14:47:56 +0000
@@ -31,24 +31,26 @@
 
 
 def cleaning_teardown(testobj):
+    usermgr = config.db.user_manager
+    listmgr = config.db.list_manager
     # Remove all users, addresses and members, then delete all mailing lists.
-    for user in config.user_manager.users:
-        config.user_manager.delete_user(user)
-    for address in config.user_manager.addresses:
-        config.user_manager.delete_address(address)
-    for mlist in config.list_manager.mailing_lists:
+    for user in usermgr.users:
+        usermgr.delete_user(user)
+    for address in usermgr.addresses:
+        usermgr.delete_address(address)
+    for mlist in listmgr.mailing_lists:
         for member in mlist.members.members:
             member.unsubscribe()
         for admin in mlist.administrators.members:
             admin.unsubscribe()
-        config.list_manager.delete(mlist)
+        listmgr.delete(mlist)
     flush()
-    assert not list(config.list_manager.mailing_lists), (
+    assert not list(listmgr.mailing_lists), (
         'There should be no mailing lists left: %s' %
-        COMMASPACE.join(sorted(config.list_manager.names)))
-    assert not list(config.user_manager.users), (
+        COMMASPACE.join(sorted(listmgr.names)))
+    assert not list(usermgr.users), (
         'There should be no users left!')
-    assert not list(config.user_manager.addresses), (
+    assert not list(usermgr.addresses), (
         'There should be no addresses left!')
     # Remove all queue files.
     for dirpath, dirnames, filenames in os.walk(config.QUEUE_DIR):



--
(no title)
https://code.launchpad.net/~mailman-coders/mailman/3.0

You are receiving this branch notification because you are subscribed to it.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mailman-coders/mailman/3.0/+subscription/mailman-checkins.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to