summaryrefslogtreecommitdiff
path: root/mailman/docs/users.txt
diff options
context:
space:
mode:
Diffstat (limited to 'mailman/docs/users.txt')
-rw-r--r--mailman/docs/users.txt195
1 files changed, 0 insertions, 195 deletions
diff --git a/mailman/docs/users.txt b/mailman/docs/users.txt
deleted file mode 100644
index ff7b9ca84..000000000
--- a/mailman/docs/users.txt
+++ /dev/null
@@ -1,195 +0,0 @@
-Users
-=====
-
-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.
-
- >>> usermgr = config.db.user_manager
-
-
-User data
----------
-
-Users may have a real name and a password.
-
- >>> user_1 = usermgr.create_user()
- >>> user_1.password = u'my password'
- >>> user_1.real_name = u'Zoe Person'
- >>> sorted(user.real_name for user in usermgr.users)
- [u'Zoe Person']
- >>> sorted(user.password for user in usermgr.users)
- [u'my password']
-
-The password and real name can be changed at any time.
-
- >>> user_1.real_name = u'Zoe X. Person'
- >>> user_1.password = u'another password'
- >>> sorted(user.real_name for user in usermgr.users)
- [u'Zoe X. Person']
- >>> sorted(user.password for user in usermgr.users)
- [u'another password']
-
-
-Users addresses
----------------
-
-One of the pieces of information that a user links to is a set of email
-addresses they control, in the form of IAddress objects. A user can control
-many addresses, but addresses may be controlled by only one user.
-
-The easiest way to link a user to an address is to just register the new
-address on a user object.
-
- >>> user_1.register(u'zperson@example.com', u'Zoe Person')
- <Address: Zoe Person <zperson@example.com> [not verified] at 0x...>
- >>> user_1.register(u'zperson@example.org')
- <Address: zperson@example.org [not verified] at 0x...>
- >>> sorted(address.address for address in user_1.addresses)
- [u'zperson@example.com', u'zperson@example.org']
- >>> sorted(address.real_name for address in user_1.addresses)
- [u'', u'Zoe Person']
-
-You can also create the address separately and then link it to the user.
-
- >>> address_1 = usermgr.create_address(u'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']
- >>> sorted(address.real_name for address in user_1.addresses)
- [u'', u'', u'Zoe Person']
-
-But don't try to link an address to more than one user.
-
- >>> another_user = usermgr.create_user()
- >>> another_user.link(address_1)
- Traceback (most recent call last):
- ...
- AddressAlreadyLinkedError: zperson@example.net
-
-You can also ask whether a given user controls a given address.
-
- >>> user_1.controls(address_1.address)
- True
- >>> user_1.controls(u'bperson@example.com')
- False
-
-Given a text email address, the user manager can find the user that controls
-that address.
-
- >>> usermgr.get_user(u'zperson@example.com') is user_1
- True
- >>> usermgr.get_user(u'zperson@example.net') is user_1
- True
- >>> usermgr.get_user(u'zperson@example.org') is user_1
- True
- >>> print usermgr.get_user(u'bperson@example.com')
- None
-
-Addresses can also be unlinked from a user.
-
- >>> user_1.unlink(address_1)
- >>> user_1.controls(u'zperson@example.net')
- False
- >>> print usermgr.get_user(u'aperson@example.net')
- None
-
-But don't try to unlink the address from a user it's not linked to.
-
- >>> user_1.unlink(address_1)
- Traceback (most recent call last):
- ...
- AddressNotLinkedError: zperson@example.net
- >>> another_user.unlink(address_1)
- Traceback (most recent call last):
- ...
- AddressNotLinkedError: zperson@example.net
-
-
-Users and preferences
----------------------
-
-This is a helper function for the following section.
-
- >>> def show_prefs(prefs):
- ... print 'acknowledge_posts :', prefs.acknowledge_posts
- ... print 'preferred_language :', prefs.preferred_language
- ... print 'receive_list_copy :', prefs.receive_list_copy
- ... print 'receive_own_postings :', prefs.receive_own_postings
- ... print 'delivery_mode :', prefs.delivery_mode
-
-Users have preferences, but these preferences have no default settings.
-
- >>> from mailman.interfaces.preferences import IPreferences
- >>> show_prefs(user_1.preferences)
- acknowledge_posts : None
- preferred_language : None
- receive_list_copy : None
- receive_own_postings : None
- delivery_mode : None
-
-Some of these preferences are booleans and they can be set to True or False.
-
- >>> from mailman.constants import DeliveryMode
- >>> prefs = user_1.preferences
- >>> prefs.acknowledge_posts = True
- >>> prefs.preferred_language = u'it'
- >>> prefs.receive_list_copy = False
- >>> prefs.receive_own_postings = False
- >>> prefs.delivery_mode = DeliveryMode.regular
- >>> show_prefs(user_1.preferences)
- acknowledge_posts : True
- preferred_language : it
- receive_list_copy : False
- receive_own_postings : False
- delivery_mode : DeliveryMode.regular
-
-
-Subscriptions
--------------
-
-Users know which mailing lists they are subscribed to, regardless of
-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(u'zperson@example.com')
- >>> org = usermgr.get_address(u'zperson@example.org')
- >>> net = usermgr.get_address(u'zperson@example.net')
-
- >>> from mailman.app.lifecycle import create_list
- >>> mlist_1 = create_list(u'xtest_1@example.com')
- >>> mlist_2 = create_list(u'xtest_2@example.com')
- >>> mlist_3 = create_list(u'xtest_3@example.com')
- >>> from mailman.interfaces.member import MemberRole
-
- >>> com.subscribe(mlist_1, MemberRole.member)
- <Member: Zoe Person <zperson@example.com> on xtest_1@example.com as
- MemberRole.member>
- >>> org.subscribe(mlist_2, MemberRole.member)
- <Member: zperson@example.org on xtest_2@example.com as MemberRole.member>
- >>> org.subscribe(mlist_2, MemberRole.owner)
- <Member: zperson@example.org on xtest_2@example.com as MemberRole.owner>
- >>> net.subscribe(mlist_3, MemberRole.moderator)
- <Member: zperson@example.net on xtest_3@example.com as
- MemberRole.moderator>
-
- >>> memberships = user_1.memberships
- >>> from mailman.interfaces.roster import IRoster
- >>> from zope.interface.verify import verifyObject
- >>> verifyObject(IRoster, memberships)
- True
- >>> members = sorted(memberships.members)
- >>> len(members)
- 4
- >>> def sortkey(member):
- ... return member.address.address, member.mailing_list, int(member.role)
- >>> for member in sorted(members, key=sortkey):
- ... print member.address.address, member.mailing_list, member.role
- zperson@example.com xtest_1@example.com MemberRole.member
- 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