diff options
Diffstat (limited to 'src/mailman/commands/docs/create.rst')
| -rw-r--r-- | src/mailman/commands/docs/create.rst | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/src/mailman/commands/docs/create.rst b/src/mailman/commands/docs/create.rst new file mode 100644 index 000000000..e902c58e1 --- /dev/null +++ b/src/mailman/commands/docs/create.rst @@ -0,0 +1,186 @@ +========================== +Command line list creation +========================== + +A system administrator can create mailing lists by the command line. + + >>> class FakeArgs: + ... language = None + ... owners = [] + ... quiet = False + ... domain = None + ... listname = None + ... notify = False + +You cannot create a mailing list in an unknown domain. + + >>> from mailman.commands.cli_lists import Create + >>> command = Create() + + >>> class FakeParser: + ... def error(self, message): + ... print message + >>> command.parser = FakeParser() + + >>> FakeArgs.listname = ['test@example.xx'] + >>> command.process(FakeArgs) + Undefined domain: example.xx + +The ``-d`` or ``--domain`` option is used to tell Mailman to auto-register the +domain. Both the mailing list and domain will be created. + + >>> FakeArgs.domain = True + >>> command.process(FakeArgs) + Created mailing list: test@example.xx + +Now both the domain and the mailing list exist in the database. +:: + + >>> from mailman.interfaces.listmanager import IListManager + >>> from zope.component import getUtility + >>> list_manager = getUtility(IListManager) + >>> list_manager.get('test@example.xx') + <mailing list "test@example.xx" at ...> + + >>> from mailman.interfaces.domain import IDomainManager + >>> getUtility(IDomainManager).get('example.xx') + <Domain example.xx, base_url: http://example.xx, + contact_address: postmaster@example.xx> + +You can also create mailing lists in existing domains without the +auto-creation flag. +:: + + >>> FakeArgs.domain = False + >>> FakeArgs.listname = ['test1@example.com'] + >>> command.process(FakeArgs) + Created mailing list: test1@example.com + + >>> list_manager.get('test1@example.com') + <mailing list "test1@example.com" at ...> + +The command can also operate quietly. +:: + + >>> FakeArgs.quiet = True + >>> FakeArgs.listname = ['test2@example.com'] + >>> command.process(FakeArgs) + + >>> mlist = list_manager.get('test2@example.com') + >>> mlist + <mailing list "test2@example.com" at ...> + + +Setting the owner +================= + +By default, no list owners are specified. + + >>> dump_list(mlist.owners.addresses) + *Empty* + +But you can specify an owner address on the command line when you create the +mailing list. +:: + + >>> FakeArgs.quiet = False + >>> FakeArgs.listname = ['test4@example.com'] + >>> FakeArgs.owners = ['foo@example.org'] + >>> command.process(FakeArgs) + Created mailing list: test4@example.com + + >>> mlist = list_manager.get('test4@example.com') + >>> dump_list(repr(address) for address in mlist.owners.addresses) + <Address: foo@example.org [not verified] at ...> + +You can even specify more than one address for the owners. +:: + + >>> FakeArgs.owners = ['foo@example.net', + ... 'bar@example.net', + ... 'baz@example.net'] + >>> FakeArgs.listname = ['test5@example.com'] + >>> command.process(FakeArgs) + Created mailing list: test5@example.com + + >>> mlist = list_manager.get('test5@example.com') + >>> from operator import attrgetter + >>> dump_list(repr(address) for address in mlist.owners.addresses) + <Address: bar@example.net [not verified] at ...> + <Address: baz@example.net [not verified] at ...> + <Address: foo@example.net [not verified] at ...> + + +Setting the language +==================== + +You can set the default language for the new mailing list when you create it. +The language must be known to Mailman. +:: + + >>> FakeArgs.listname = ['test3@example.com'] + >>> FakeArgs.language = 'ee' + >>> command.process(FakeArgs) + Invalid language code: ee + + >>> from mailman.interfaces.languages import ILanguageManager + >>> getUtility(ILanguageManager).add('ee', 'iso-8859-1', 'Freedonian') + + >>> FakeArgs.quiet = False + >>> FakeArgs.listname = ['test3@example.com'] + >>> FakeArgs.language = 'fr' + >>> command.process(FakeArgs) + Created mailing list: test3@example.com + + >>> mlist = list_manager.get('test3@example.com') + >>> print mlist.preferred_language + <Language [fr] French> + >>> FakeArgs.language = None + + +Notifications +============= + +When told to, Mailman will notify the list owners of their new mailing list. + + >>> FakeArgs.listname = ['test6@example.com'] + >>> FakeArgs.notify = True + >>> command.process(FakeArgs) + Created mailing list: test6@example.com + +The notification message is in the virgin queue. +:: + + >>> from mailman.testing.helpers import get_queue_messages + >>> messages = get_queue_messages('virgin') + >>> len(messages) + 1 + + >>> for message in messages: + ... print message.msg.as_string() + MIME-Version: 1.0 + ... + Subject: Your new mailing list: test6@example.com + From: noreply@example.com + To: foo@example.net, bar@example.net, baz@example.net + ... + <BLANKLINE> + The mailing list 'test6@example.com' has just been created for you. + The following is some basic information about your mailing list. + <BLANKLINE> + You can configure your mailing list at the following web page: + <BLANKLINE> + http://lists.example.com/admin/test6@example.com + <BLANKLINE> + The web page for users of your mailing list is: + <BLANKLINE> + http://lists.example.com/listinfo/test6@example.com + <BLANKLINE> + There is also an email-based interface for users (not administrators) + of your list; you can get info about using it by sending a message + with just the word 'help' as subject or in the body, to: + <BLANKLINE> + test6-request@example.com + <BLANKLINE> + Please address all questions to noreply@example.com. + <BLANKLINE> |
