summaryrefslogtreecommitdiff
path: root/src/mailman/docs
diff options
context:
space:
mode:
authorBarry Warsaw2009-08-26 10:51:52 -0400
committerBarry Warsaw2009-08-26 10:51:52 -0400
commit9612486f46d88d2221349d12de9d61abb7bab39f (patch)
tree88cb073ac19d0478aa6c89f72123dd4eefb27985 /src/mailman/docs
parent9ad8c1e5524bc9479fd356757016ec160f392dd7 (diff)
downloadmailman-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.txt61
-rw-r--r--src/mailman/docs/autorespond.txt9
-rw-r--r--src/mailman/docs/lifecycle.txt13
-rw-r--r--src/mailman/docs/membership.txt11
-rw-r--r--src/mailman/docs/registration.txt31
-rw-r--r--src/mailman/docs/requests.txt13
-rw-r--r--src/mailman/docs/usermanager.txt38
-rw-r--r--src/mailman/docs/users.txt43
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
+