diff options
| author | Barry Warsaw | 2009-01-25 13:01:41 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2009-01-25 13:01:41 -0500 |
| commit | eefd06f1b88b8ecbb23a9013cd223b72ca85c20d (patch) | |
| tree | 72c947fe16fce0e07e996ee74020b26585d7e846 /mailman/docs/lifecycle.txt | |
| parent | 07871212f74498abd56bef3919bf3e029eb8b930 (diff) | |
| download | mailman-eefd06f1b88b8ecbb23a9013cd223b72ca85c20d.tar.gz mailman-eefd06f1b88b8ecbb23a9013cd223b72ca85c20d.tar.zst mailman-eefd06f1b88b8ecbb23a9013cd223b72ca85c20d.zip | |
Diffstat (limited to 'mailman/docs/lifecycle.txt')
| -rw-r--r-- | mailman/docs/lifecycle.txt | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/mailman/docs/lifecycle.txt b/mailman/docs/lifecycle.txt deleted file mode 100644 index c6c0c0671..000000000 --- a/mailman/docs/lifecycle.txt +++ /dev/null @@ -1,136 +0,0 @@ -Application level list lifecycle --------------------------------- - -The low-level way to create and delete a mailing list is to use the -IListManager interface. This interface simply adds or removes the appropriate -database entries to record the list's creation. - -There is a higher level interface for creating and deleting mailing lists -which performs additional tasks such as: - - * validating the list's posting address (which also serves as the list's - fully qualified name); - * ensuring that the list's domain is registered; - * applying all matching styles to the new list; - * creating and assigning list owners; - * notifying watchers of list creation; - * creating ancillary artifacts (such as the list's on-disk directory) - - >>> from mailman.app.lifecycle import create_list - - -Posting address validation --------------------------- - -If you try to use the higher-level interface to create a mailing list with a -bogus posting address, you get an exception. - - >>> create_list('not a valid address') - Traceback (most recent call last): - ... - InvalidEmailAddress: 'not a valid address' - -If the posting address is valid, but the domain has not been registered with -Mailman yet, you get an exception. - - >>> create_list('test@example.org') - Traceback (most recent call last): - ... - BadDomainSpecificationError: example.org - - -Creating a list applies its styles ----------------------------------- - -Start by registering a test style. - - >>> from zope.interface import implements - >>> from mailman.interfaces.styles import IStyle - >>> class TestStyle(object): - ... implements(IStyle) - ... name = 'test' - ... priority = 10 - ... def apply(self, mailing_list): - ... # Just does something very simple. - ... mailing_list.msg_footer = u'test footer' - ... def match(self, mailing_list, styles): - ... # Applies to any test list - ... if 'test' in mailing_list.fqdn_listname: - ... styles.append(self) - - >>> config.style_manager.register(TestStyle()) - -Using the higher level interface for creating a list, applies all matching -list styles. - - >>> mlist_1 = create_list(u'test_1@example.com') - >>> mlist_1.fqdn_listname - u'test_1@example.com' - >>> mlist_1.msg_footer - u'test footer' - - -Creating a list with owners ---------------------------- - -You can also specify a list of owner email addresses. If these addresses are -not yet known, they will be registered, and new users will be linked to them. -However the addresses are not verified. - - >>> owners = [u'aperson@example.com', u'bperson@example.com', - ... u'cperson@example.com', u'dperson@example.com'] - >>> mlist_2 = create_list(u'test_2@example.com', owners) - >>> mlist_2.fqdn_listname - u'test_2@example.com' - >>> mlist_2.msg_footer - u'test footer' - >>> sorted(addr.address for addr in mlist_2.owners.addresses) - [u'aperson@example.com', u'bperson@example.com', - u'cperson@example.com', u'dperson@example.com'] - -None of the owner addresses are verified. - - >>> any(addr.verified_on is not None for addr in mlist_2.owners.addresses) - False - -However, all addresses are linked to users. - - >>> # The owners have no names yet - >>> len(list(mlist_2.owners.users)) - 4 - -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(u'aperson@example.com') - >>> user_b = usermgr.get_user(u'bperson@example.com') - >>> user_c = usermgr.get_user(u'cperson@example.com') - >>> user_d = usermgr.get_user(u'dperson@example.com') - >>> user_a.real_name = u'Anne Person' - >>> user_b.real_name = u'Bart Person' - >>> user_c.real_name = u'Caty Person' - >>> user_d.real_name = u'Dirk Person' - - >>> mlist_3 = create_list(u'test_3@example.com', owners) - >>> sorted(user.real_name for user in mlist_3.owners.users) - [u'Anne Person', u'Bart Person', u'Caty Person', u'Dirk Person'] - - -Removing a list ---------------- - -Removing a mailing list deletes the list, all its subscribers, and any related -artifacts. - - >>> from mailman.app.lifecycle import remove_list - >>> remove_list(mlist_2.fqdn_listname, mlist_2, True) - >>> print config.db.list_manager.get('test_2@example.com') - None - -We should now be able to completely recreate the mailing list. - - >>> mlist_2a = create_list(u'test_2@example.com', owners) - >>> sorted(addr.address for addr in mlist_2a.owners.addresses) - [u'aperson@example.com', u'bperson@example.com', - u'cperson@example.com', u'dperson@example.com'] |
