diff options
| author | Barry Warsaw | 2009-08-26 10:51:52 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2009-08-26 10:51:52 -0400 |
| commit | 9612486f46d88d2221349d12de9d61abb7bab39f (patch) | |
| tree | 88cb073ac19d0478aa6c89f72123dd4eefb27985 /src/mailman/docs | |
| parent | 9ad8c1e5524bc9479fd356757016ec160f392dd7 (diff) | |
| download | mailman-9612486f46d88d2221349d12de9d61abb7bab39f.tar.gz mailman-9612486f46d88d2221349d12de9d61abb7bab39f.tar.zst mailman-9612486f46d88d2221349d12de9d61abb7bab39f.zip | |
Remove the user_manager attribute from config.db and expose it as an
IUserManager utility.
Diffstat (limited to 'src/mailman/docs')
| -rw-r--r-- | src/mailman/docs/addresses.txt | 61 | ||||
| -rw-r--r-- | src/mailman/docs/autorespond.txt | 9 | ||||
| -rw-r--r-- | src/mailman/docs/lifecycle.txt | 13 | ||||
| -rw-r--r-- | src/mailman/docs/membership.txt | 11 | ||||
| -rw-r--r-- | src/mailman/docs/registration.txt | 31 | ||||
| -rw-r--r-- | src/mailman/docs/requests.txt | 13 | ||||
| -rw-r--r-- | src/mailman/docs/usermanager.txt | 38 | ||||
| -rw-r--r-- | src/mailman/docs/users.txt | 43 |
8 files changed, 126 insertions, 93 deletions
diff --git a/src/mailman/docs/addresses.txt b/src/mailman/docs/addresses.txt index 0c0be9505..5388a3cc8 100644 --- a/src/mailman/docs/addresses.txt +++ b/src/mailman/docs/addresses.txt @@ -7,7 +7,9 @@ those addresses, such as their registration date, and whether and when they've been validated. Addresses may be linked to the users that Mailman knows about. Addresses are subscribed to mailing lists though members. - >>> usermgr = config.db.user_manager + >>> from mailman.interfaces.usermanager import IUserManager + >>> from zope.component import getUtility + >>> user_manager = getUtility(IUserManager) Creating addresses @@ -16,13 +18,13 @@ Creating addresses Addresses are created directly through the user manager, which starts out with no addresses. - >>> sorted(address.address for address in usermgr.addresses) + >>> sorted(address.address for address in user_manager.addresses) [] Creating an unlinked email address is straightforward. - >>> address_1 = usermgr.create_address('aperson@example.com') - >>> sorted(address.address for address in usermgr.addresses) + >>> address_1 = user_manager.create_address('aperson@example.com') + >>> sorted(address.address for address in user_manager.addresses) [u'aperson@example.com'] However, such addresses have no real name. @@ -32,11 +34,11 @@ However, such addresses have no real name. You can also create an email address object with a real name. - >>> address_2 = usermgr.create_address( + >>> address_2 = user_manager.create_address( ... 'bperson@example.com', 'Ben Person') - >>> sorted(address.address for address in usermgr.addresses) + >>> sorted(address.address for address in user_manager.addresses) [u'aperson@example.com', u'bperson@example.com'] - >>> sorted(address.real_name for address in usermgr.addresses) + >>> sorted(address.real_name for address in user_manager.addresses) [u'', u'Ben Person'] The str() of the address is the RFC 2822 preferred originator format, while @@ -50,35 +52,36 @@ the repr() carries more information. You can assign real names to existing addresses. >>> address_1.real_name = 'Anne Person' - >>> sorted(address.real_name for address in usermgr.addresses) + >>> sorted(address.real_name for address in user_manager.addresses) [u'Anne Person', u'Ben Person'] These addresses are not linked to users, and can be seen by searching the user manager for an associated user. - >>> print usermgr.get_user('aperson@example.com') + >>> print user_manager.get_user('aperson@example.com') None - >>> print usermgr.get_user('bperson@example.com') + >>> print user_manager.get_user('bperson@example.com') None You can create email addresses that are linked to users by using a different interface. - >>> user_1 = usermgr.create_user('cperson@example.com', u'Claire Person') + >>> user_1 = user_manager.create_user( + ... 'cperson@example.com', u'Claire Person') >>> sorted(address.address for address in user_1.addresses) [u'cperson@example.com'] - >>> sorted(address.address for address in usermgr.addresses) + >>> sorted(address.address for address in user_manager.addresses) [u'aperson@example.com', u'bperson@example.com', u'cperson@example.com'] - >>> sorted(address.real_name for address in usermgr.addresses) + >>> sorted(address.real_name for address in user_manager.addresses) [u'Anne Person', u'Ben Person', u'Claire Person'] And now you can find the associated user. - >>> print usermgr.get_user('aperson@example.com') + >>> print user_manager.get_user('aperson@example.com') None - >>> print usermgr.get_user('bperson@example.com') + >>> print user_manager.get_user('bperson@example.com') None - >>> usermgr.get_user('cperson@example.com') + >>> user_manager.get_user('cperson@example.com') <User "Claire Person" at ...> @@ -87,10 +90,10 @@ Deleting addresses You can remove an unlinked address from the user manager. - >>> usermgr.delete_address(address_1) - >>> sorted(address.address for address in usermgr.addresses) + >>> user_manager.delete_address(address_1) + >>> sorted(address.address for address in user_manager.addresses) [u'bperson@example.com', u'cperson@example.com'] - >>> sorted(address.real_name for address in usermgr.addresses) + >>> sorted(address.real_name for address in user_manager.addresses) [u'Ben Person', u'Claire Person'] Deleting a linked address does not delete the user, but it does unlink the @@ -101,12 +104,12 @@ address from the user. >>> user_1.controls('cperson@example.com') True >>> address_3 = list(user_1.addresses)[0] - >>> usermgr.delete_address(address_3) + >>> user_manager.delete_address(address_3) >>> sorted(address.address for address in user_1.addresses) [] >>> user_1.controls('cperson@example.com') False - >>> sorted(address.address for address in usermgr.addresses) + >>> sorted(address.address for address in user_manager.addresses) [u'bperson@example.com'] @@ -116,7 +119,7 @@ Registration and validation 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 = usermgr.create_address( + >>> address_4 = user_manager.create_address( ... 'dperson@example.com', 'Dan Person') >>> print address_4.registered_on None @@ -147,7 +150,7 @@ Subscriptions Addresses get subscribed to mailing lists, not users. When the address is subscribed, a role is specified. - >>> address_5 = usermgr.create_address( + >>> address_5 = user_manager.create_address( ... 'eperson@example.com', 'Elly Person') >>> mlist = create_list('_xtext@example.com') @@ -187,7 +190,7 @@ Mailman preserves the case of addresses and uses the case preserved version when sending the user a message, but it treats addresses that are different in case equivalently in all other situations. - >>> address_6 = usermgr.create_address( + >>> address_6 = user_manager.create_address( ... 'FPERSON@example.com', 'Frank Person') The str() of such an address prints the RFC 2822 preferred originator format @@ -211,15 +214,15 @@ case-preserved version are available on attributes of the IAddress object. Because addresses are case-insensitive for all other purposes, you cannot create an address that differs only in case. - >>> usermgr.create_address('fperson@example.com') + >>> user_manager.create_address('fperson@example.com') Traceback (most recent call last): ... ExistingAddressError: FPERSON@example.com - >>> usermgr.create_address('fperson@EXAMPLE.COM') + >>> user_manager.create_address('fperson@EXAMPLE.COM') Traceback (most recent call last): ... ExistingAddressError: FPERSON@example.com - >>> usermgr.create_address('FPERSON@example.com') + >>> user_manager.create_address('FPERSON@example.com') Traceback (most recent call last): ... ExistingAddressError: FPERSON@example.com @@ -227,7 +230,7 @@ create an address that differs only in case. You can get the address using either the lower cased version or case-preserved version. In fact, searching for an address is case insensitive. - >>> print usermgr.get_address('fperson@example.com').address + >>> print user_manager.get_address('fperson@example.com').address fperson@example.com - >>> print usermgr.get_address('FPERSON@example.com').address + >>> print user_manager.get_address('FPERSON@example.com').address fperson@example.com diff --git a/src/mailman/docs/autorespond.txt b/src/mailman/docs/autorespond.txt index 02a4e3acd..5d37927fa 100644 --- a/src/mailman/docs/autorespond.txt +++ b/src/mailman/docs/autorespond.txt @@ -28,7 +28,11 @@ automatic response when messages are held for approval, or when it receives an email command. You can find out how many responses for a particular address have already been sent today. - >>> address = config.db.user_manager.create_address('aperson@example.com') + >>> from mailman.interfaces.usermanager import IUserManager + >>> from zope.component import getUtility + >>> address = getUtility(IUserManager).create_address( + ... 'aperson@example.com') + >>> from mailman.interfaces.autorespond import Response >>> response_set.todays_count(address, Response.hold) 0 @@ -99,7 +103,8 @@ When another response is sent today, that becomes the last one sent. If there's been no response sent to a particular address, None is returned. - >>> address = config.db.user_manager.create_address('bperson@example.com') + >>> address = getUtility(IUserManager).create_address( + ... 'bperson@example.com') >>> response_set.todays_count(address, Response.command) 0 >>> print response_set.last_response(address, Response.command) diff --git a/src/mailman/docs/lifecycle.txt b/src/mailman/docs/lifecycle.txt index 4a4958f6d..ee4657f1d 100644 --- a/src/mailman/docs/lifecycle.txt +++ b/src/mailman/docs/lifecycle.txt @@ -103,11 +103,14 @@ However, all addresses are linked to users. If you create a mailing list with owner addresses that are already known to the system, they won't be created again. - >>> usermgr = config.db.user_manager - >>> user_a = usermgr.get_user('aperson@example.com') - >>> user_b = usermgr.get_user('bperson@example.com') - >>> user_c = usermgr.get_user('cperson@example.com') - >>> user_d = usermgr.get_user('dperson@example.com') + >>> from mailman.interfaces.usermanager import IUserManager + >>> from zope.component import getUtility + >>> user_manager = getUtility(IUserManager) + + >>> user_a = user_manager.get_user('aperson@example.com') + >>> user_b = user_manager.get_user('bperson@example.com') + >>> user_c = user_manager.get_user('cperson@example.com') + >>> user_d = user_manager.get_user('dperson@example.com') >>> user_a.real_name = 'Anne Person' >>> user_b.real_name = 'Bart Person' >>> user_c.real_name = 'Caty Person' diff --git a/src/mailman/docs/membership.txt b/src/mailman/docs/membership.txt index 26cdd2aea..ef1675593 100644 --- a/src/mailman/docs/membership.txt +++ b/src/mailman/docs/membership.txt @@ -62,8 +62,10 @@ the list's moderators. We can add new owners or moderators to this list by assigning roles to users. First we have to create the user, because there are no users in the user database yet. - >>> usermgr = config.db.user_manager - >>> user_1 = usermgr.create_user('aperson@example.com', 'Anne Person') + >>> from mailman.interfaces.usermanager import IUserManager + >>> from zope.component import getUtility + >>> user_manager = getUtility(IUserManager) + >>> user_1 = user_manager.create_user('aperson@example.com', 'Anne Person') >>> print user_1.real_name Anne Person >>> sorted(address.address for address in user_1.addresses) @@ -99,7 +101,7 @@ her a moderator. Nor does it make her a member of the list. We can add Ben as a moderator of the list, by creating a different member role for him. - >>> user_2 = usermgr.create_user('bperson@example.com', 'Ben Person') + >>> user_2 = user_manager.create_user('bperson@example.com', 'Ben Person') >>> print user_2.real_name Ben Person >>> address_2 = list(user_2.addresses)[0] @@ -136,7 +138,8 @@ delivery. Without a preference, Mailman will fall back first to the address's preference, then the user's preference, then the list's preference. Start without any member preference to see the system defaults. - >>> user_3 = usermgr.create_user('cperson@example.com', 'Claire Person') + >>> user_3 = user_manager.create_user( + ... 'cperson@example.com', 'Claire Person') >>> print user_3.real_name Claire Person >>> address_3 = list(user_3.addresses)[0] diff --git a/src/mailman/docs/registration.txt b/src/mailman/docs/registration.txt index ff6466f82..de9c29cb4 100644 --- a/src/mailman/docs/registration.txt +++ b/src/mailman/docs/registration.txt @@ -91,10 +91,12 @@ returned. There should be no records in the user manager for this address yet. - >>> usermgr = config.db.user_manager - >>> print usermgr.get_user('aperson@example.com') + >>> from mailman.interfaces.usermanager import IUserManager + >>> from zope.component import getUtility + >>> user_manager = getUtility(IUserManager) + >>> print user_manager.get_user('aperson@example.com') None - >>> print usermgr.get_address('aperson@example.com') + >>> print user_manager.get_address('aperson@example.com') None But this address is waiting for confirmation. @@ -185,10 +187,10 @@ extracts the token and uses that to confirm the pending registration. Now, there is an IAddress in the database matching the address, as well as an IUser linked to this address. The IAddress is verified. - >>> found_address = usermgr.get_address('aperson@example.com') + >>> found_address = user_manager.get_address('aperson@example.com') >>> found_address <Address: Anne Person <aperson@example.com> [verified] at ...> - >>> found_user = usermgr.get_user('aperson@example.com') + >>> found_user = user_manager.get_user('aperson@example.com') >>> found_user <User "Anne Person" at ...> >>> found_user.controls(found_address.address) @@ -222,19 +224,19 @@ If an address is in the system, but that address is not linked to a user yet and the address is not yet validated, then no user is created until the confirmation step is completed. - >>> usermgr.create_address('cperson@example.com') + >>> user_manager.create_address('cperson@example.com') <Address: cperson@example.com [not verified] at ...> >>> token = registrar.register('cperson@example.com', 'Claire Person') - >>> print usermgr.get_user('cperson@example.com') + >>> print user_manager.get_user('cperson@example.com') None >>> filebase = switchboard.files[0] >>> qmsg, qdata = switchboard.dequeue(filebase) >>> switchboard.finish(filebase) >>> registrar.confirm(token) True - >>> usermgr.get_user('cperson@example.com') + >>> user_manager.get_user('cperson@example.com') <User "Claire Person" at ...> - >>> usermgr.get_address('cperson@example.com') + >>> user_manager.get_address('cperson@example.com') <Address: cperson@example.com [verified] at ...> Even if the address being registered has already been verified, the @@ -257,9 +259,9 @@ mind about registering. When discarded, no IAddress or IUser is created. >>> registrar.discard(token) >>> print pendingdb.confirm(token) None - >>> print usermgr.get_address('eperson@example.com') + >>> print user_manager.get_address('eperson@example.com') None - >>> print usermgr.get_user('eperson@example.com') + >>> print user_manager.get_user('eperson@example.com') None @@ -270,10 +272,11 @@ When a new address for an existing user is registered, there isn't too much different except that the new address will still need to be verified before it can be used. - >>> dperson = usermgr.create_user('dperson@example.com', 'Dave Person') + >>> dperson = user_manager.create_user( + ... 'dperson@example.com', 'Dave Person') >>> dperson <User "Dave Person" at ...> - >>> address = usermgr.get_address('dperson@example.com') + >>> address = user_manager.get_address('dperson@example.com') >>> address.verified_on = datetime.now() >>> from operator import attrgetter @@ -287,7 +290,7 @@ can be used. >>> switchboard.finish(filebase) >>> registrar.confirm(token) True - >>> user = usermgr.get_user('david.person@example.com') + >>> user = user_manager.get_user('david.person@example.com') >>> user is dperson True >>> user diff --git a/src/mailman/docs/requests.txt b/src/mailman/docs/requests.txt index 4a04017aa..0396c48d1 100644 --- a/src/mailman/docs/requests.txt +++ b/src/mailman/docs/requests.txt @@ -681,7 +681,12 @@ Frank Person is now a member of the mailing list. <Language [en] English (USA)> >>> print member.delivery_mode DeliveryMode.regular - >>> user = config.db.user_manager.get_user(member.address.address) + + >>> from mailman.interfaces.usermanager import IUserManager + >>> from zope.component import getUtility + >>> user_manager = getUtility(IUserManager) + + >>> user = user_manager.get_user(member.address.address) >>> print user.real_name Frank Person >>> print user.password @@ -697,14 +702,16 @@ unsubscription holds can send the list's moderators an immediate notification. >>> mlist.admin_immed_notify = False >>> from mailman.interfaces.member import MemberRole - >>> user_1 = config.db.user_manager.create_user('gperson@example.com') + >>> user_1 = user_manager.create_user('gperson@example.com') >>> address_1 = list(user_1.addresses)[0] >>> address_1.subscribe(mlist, MemberRole.member) <Member: gperson@example.com on alist@example.com as MemberRole.member> - >>> user_2 = config.db.user_manager.create_user('hperson@example.com') + + >>> user_2 = user_manager.create_user('hperson@example.com') >>> address_2 = list(user_2.addresses)[0] >>> address_2.subscribe(mlist, MemberRole.member) <Member: hperson@example.com on alist@example.com as MemberRole.member> + >>> id_5 = moderator.hold_unsubscription(mlist, 'gperson@example.com') >>> requests.get_request(id_5) is not None True diff --git a/src/mailman/docs/usermanager.txt b/src/mailman/docs/usermanager.txt index 3c5369b84..856221952 100644 --- a/src/mailman/docs/usermanager.txt +++ b/src/mailman/docs/usermanager.txt @@ -8,10 +8,8 @@ variable MANAGERS_INIT_FUNCTION. The instance is accessible on the global config object. >>> from mailman.interfaces.usermanager import IUserManager - >>> from zope.interface.verify import verifyObject - >>> usermgr = config.db.user_manager - >>> verifyObject(IUserManager, usermgr) - True + >>> from zope.component import getUtility + >>> user_manager = getUtility(IUserManager) Creating users @@ -23,9 +21,11 @@ time. This user will have an empty string as their real name, but will not have a password. >>> from mailman.interfaces.user import IUser - >>> user = usermgr.create_user() + >>> from zope.interface.verify import verifyObject + >>> user = user_manager.create_user() >>> verifyObject(IUser, user) True + >>> sorted(address.address for address in user.addresses) [] >>> user.real_name @@ -41,51 +41,51 @@ The user has preferences, but none of them will be specified. A user can be assigned a real name. >>> user.real_name = 'Anne Person' - >>> sorted(user.real_name for user in usermgr.users) + >>> sorted(user.real_name for user in user_manager.users) [u'Anne Person'] A user can be assigned a password. >>> user.password = 'secret' - >>> sorted(user.password for user in usermgr.users) + >>> sorted(user.password for user in user_manager.users) [u'secret'] You can also create a user with an address to start out with. - >>> user_2 = usermgr.create_user('bperson@example.com') + >>> user_2 = user_manager.create_user('bperson@example.com') >>> verifyObject(IUser, user_2) True >>> sorted(address.address for address in user_2.addresses) [u'bperson@example.com'] - >>> sorted(user.real_name for user in usermgr.users) + >>> sorted(user.real_name for user in user_manager.users) [u'', u'Anne Person'] As above, you can assign a real name to such users. >>> user_2.real_name = 'Ben Person' - >>> sorted(user.real_name for user in usermgr.users) + >>> sorted(user.real_name for user in user_manager.users) [u'Anne Person', u'Ben Person'] You can also create a user with just a real name. - >>> user_3 = usermgr.create_user(real_name='Claire Person') + >>> user_3 = user_manager.create_user(real_name='Claire Person') >>> verifyObject(IUser, user_3) True >>> sorted(address.address for address in user.addresses) [] - >>> sorted(user.real_name for user in usermgr.users) + >>> sorted(user.real_name for user in user_manager.users) [u'Anne Person', u'Ben Person', u'Claire Person'] Finally, you can create a user with both an address and a real name. - >>> user_4 = usermgr.create_user('dperson@example.com', 'Dan Person') + >>> user_4 = user_manager.create_user('dperson@example.com', 'Dan Person') >>> verifyObject(IUser, user_3) True >>> sorted(address.address for address in user_4.addresses) [u'dperson@example.com'] >>> sorted(address.real_name for address in user_4.addresses) [u'Dan Person'] - >>> sorted(user.real_name for user in usermgr.users) + >>> sorted(user.real_name for user in user_manager.users) [u'Anne Person', u'Ben Person', u'Claire Person', u'Dan Person'] @@ -95,8 +95,8 @@ Deleting users You delete users by going through the user manager. The deleted user is no longer available through the user manager iterator. - >>> usermgr.delete_user(user) - >>> sorted(user.real_name for user in usermgr.users) + >>> user_manager.delete_user(user) + >>> sorted(user.real_name for user in user_manager.users) [u'Ben Person', u'Claire Person', u'Dan Person'] @@ -109,7 +109,7 @@ that the .get_user() method takes a string email address, not an IAddress object. >>> address = list(user_4.addresses)[0] - >>> found_user = usermgr.get_user(address.address) + >>> found_user = user_manager.get_user(address.address) >>> found_user <User "Dan Person" at ...> >>> found_user is user_4 @@ -118,8 +118,8 @@ object. If the address is not in the user database or does not have a user associated with it, you will get None back. - >>> print usermgr.get_user('zperson@example.com') + >>> print user_manager.get_user('zperson@example.com') None >>> user_4.unlink(address) - >>> print usermgr.get_user(address.address) + >>> print user_manager.get_user(address.address) None diff --git a/src/mailman/docs/users.txt b/src/mailman/docs/users.txt index ef4f3062b..26788a2e5 100644 --- a/src/mailman/docs/users.txt +++ b/src/mailman/docs/users.txt @@ -6,9 +6,11 @@ Users are entities that represent people. A user has a real name and a password. Optionally a user may have some preferences and a set of addresses they control. A user also knows which mailing lists they are subscribed to. -See usermanager.txt for examples of how to create, delete, and find users. +See `usermanager.txt`_ for examples of how to create, delete, and find users. - >>> usermgr = config.db.user_manager + >>> from mailman.interfaces.usermanager import IUserManager + >>> from zope.component import getUtility + >>> user_manager = getUtility(IUserManager) User data @@ -16,21 +18,21 @@ User data Users may have a real name and a password. - >>> user_1 = usermgr.create_user() + >>> user_1 = user_manager.create_user() >>> user_1.password = 'my password' >>> user_1.real_name = 'Zoe Person' - >>> sorted(user.real_name for user in usermgr.users) + >>> sorted(user.real_name for user in user_manager.users) [u'Zoe Person'] - >>> sorted(user.password for user in usermgr.users) + >>> sorted(user.password for user in user_manager.users) [u'my password'] The password and real name can be changed at any time. >>> user_1.real_name = 'Zoe X. Person' >>> user_1.password = 'another password' - >>> sorted(user.real_name for user in usermgr.users) + >>> sorted(user.real_name for user in user_manager.users) [u'Zoe X. Person'] - >>> sorted(user.password for user in usermgr.users) + >>> sorted(user.password for user in user_manager.users) [u'another password'] @@ -55,7 +57,7 @@ address on a user object. You can also create the address separately and then link it to the user. - >>> address_1 = usermgr.create_address('zperson@example.net') + >>> address_1 = user_manager.create_address('zperson@example.net') >>> user_1.link(address_1) >>> sorted(address.address for address in user_1.addresses) [u'zperson@example.com', u'zperson@example.net', u'zperson@example.org'] @@ -64,7 +66,7 @@ You can also create the address separately and then link it to the user. But don't try to link an address to more than one user. - >>> another_user = usermgr.create_user() + >>> another_user = user_manager.create_user() >>> another_user.link(address_1) Traceback (most recent call last): ... @@ -80,13 +82,13 @@ You can also ask whether a given user controls a given address. Given a text email address, the user manager can find the user that controls that address. - >>> usermgr.get_user('zperson@example.com') is user_1 + >>> user_manager.get_user('zperson@example.com') is user_1 True - >>> usermgr.get_user('zperson@example.net') is user_1 + >>> user_manager.get_user('zperson@example.net') is user_1 True - >>> usermgr.get_user('zperson@example.org') is user_1 + >>> user_manager.get_user('zperson@example.org') is user_1 True - >>> print usermgr.get_user('bperson@example.com') + >>> print user_manager.get_user('bperson@example.com') None Addresses can also be unlinked from a user. @@ -94,7 +96,7 @@ Addresses can also be unlinked from a user. >>> user_1.unlink(address_1) >>> user_1.controls('zperson@example.net') False - >>> print usermgr.get_user('aperson@example.net') + >>> print user_manager.get_user('aperson@example.net') None But don't try to unlink the address from a user it's not linked to. @@ -159,9 +161,9 @@ membership role. >>> user_1.link(address_1) >>> sorted(address.address for address in user_1.addresses) [u'zperson@example.com', u'zperson@example.net', u'zperson@example.org'] - >>> com = usermgr.get_address('zperson@example.com') - >>> org = usermgr.get_address('zperson@example.org') - >>> net = usermgr.get_address('zperson@example.net') + >>> com = user_manager.get_address('zperson@example.com') + >>> org = user_manager.get_address('zperson@example.org') + >>> net = user_manager.get_address('zperson@example.net') >>> from mailman.app.lifecycle import create_list >>> mlist_1 = create_list('xtest_1@example.com') @@ -197,3 +199,10 @@ membership role. zperson@example.net xtest_3@example.com MemberRole.moderator zperson@example.org xtest_2@example.com MemberRole.member zperson@example.org xtest_2@example.com MemberRole.owner + + +Cross references +================ + +.. _`usermanager.txt`: usermanager.html + |
