summaryrefslogtreecommitdiff
path: root/src/mailman/app/docs
Commit message (Collapse)AuthorAgeFilesLines
* Extended test helper subscribe() which takes an optional email address andBarry Warsaw2015-03-261-0/+1
| | | | returns the newly created member.
* * Refactor add_member() so that it uses a RequestRecord namedtuple.Barry Warsaw2015-03-211-12/+18
| | | | | | * RequestRecord contains no password key so these are not part of the held requests database any more. * Pending record contains `email` now instead of `address`.
* Refactor subject-prefix handler out of cook-headers handler and make all testsBarry Warsaw2014-12-211-4/+4
| | | | pass.
* app/docs and app.tests all pass now.Barry Warsaw2014-12-152-7/+1
|
* More test repair.Barry Warsaw2014-12-151-2/+2
|
* Fix pipelines tests.Barry Warsaw2014-12-151-4/+4
|
* * You no longer have to edit `src/mailman/testing/testing.cfg` to run theBarry Warsaw2014-11-091-3/+6
| | | | | | | | | | | test suite against PostgreSQL. See `src/mailman/docs/START.rst` for details. Also: * Test fixes. * Doc fixes. * PostgreSQL/model fixes.
* tox-ify the test suite. First, this makes it easier to run since you don'tBarry Warsaw2014-11-081-10/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | have to manually set up the virtualenv. Second, it allows us to later create a python3 environment for porting purposes. Other change: * The `mailman conf` command no longer takes the `-t/--sort` option; the output is always sorted. * The ``[database]migrations_path`` setting is removed. * You no longer have to create a virtual environment separately when running the test suite. Just use `tox`. * The RFC 2369 headers added to outgoing messages are now added in sorted order. * The JSON representation `http_etag` key uses an algorithm that is insensitive to Python's dictionary sort order.
| * Tox-ify the test suite. Now you don't have to create a virtualenv separately.Barry Warsaw2014-11-071-3/+3
|/ | | | | | | | | | | To do this, we have to handle random test ordering, since tox explicitly sets PYTHONHASHSEED. That's a good thing for the future Python 3 port. Removed `mailman conf -t/--sort`; now the output is always sorted. RFC 2369 headers are now sorted before being added. etag repr dicts are sorted using pprint.pformat().
* Merge abompard's fixes to the Postgres test suite.Barry Warsaw2014-10-301-43/+34
|
* Use print functions consistently through, and update all __future__ imports toBarry Warsaw2014-04-289-67/+67
| | | | | | | | reflect this. Also, mock out sys.stderr on some tests so that their nose2 output is quieter. A few other minor coding style consistencies.
* typoBarry Warsaw2013-10-241-1/+1
|
* * Re-name doctests.Barry Warsaw2013-08-251-1/+2
| | | | | * Fix executable location now that we're not using buildout. * Fix enum repr.
* LP: #975692 phase 1Barry Warsaw2012-12-281-90/+28
| | | | | | | | | | | | | | | | | * Rework list style management. No more style priorities or matching.. Now, you name a style explicitly to apply and that's it. * create_list() now takes a `style` argument. * config file now names both a default style to use, and a set of paths to scan for IStyle instances. (This could be a model for other plugins.) * added IMailingList.style_name to record the last style applied, but this is going to be removed in subsequent revisions. Also: * Move find_components() and scan_module() from app/finder.py to utilities/modules.py * Cleaned up lifecycle.rst for better documentation. Some tests moved to test_lifecycle.py. * Remove some unnecessary test tearDown() code.
* * Fill out the documentation on moderation notifications.Barry Warsaw2012-12-171-84/+164
| | | | * Fix LP: 1091321; typo in send_goodbye_message().
* Fix cross-references.Barry Warsaw2012-12-171-2/+2
|
* * Simplify moderator.rst and requests.rst so they serve a better purpose asBarry Warsaw2012-12-171-0/+458
| | | | | | | | | | documentation. Move non-documentation tests into a separate unittest file. * Separate out the doctests for IRequest from the doctests for app/moderator.py and place the latter in a separate file. * Fix typo in app/membership.py (s/send_goodbye_msg/send_goodbye_message), but LP: #1091321 tracks more needed fixes in this area.
* DatabaseBarry Warsaw2012-10-161-55/+70
| | | | | | | | | | | | -------- * The `ban` table now uses list-ids to cross-reference the mailing list, since these cannot change even if the mailing list is moved or renamed. Interfaces ---------- * The `IBanManager` is no longer a global utility. Instead, you adapt an `IMailingList` to an `IBanManager` to manage the bans for a specific mailing list. To manage the global bans, adapt ``None``.
* * The link between members and the mailing lists they are subscribed to, isBarry Warsaw2012-09-042-12/+14
| | | | | | | | | | | | | | | now via the RFC 2369 `list_id` instead of the fqdn listname (i.e. posting address). This is because while the posting address can change if the mailing list is moved to a new server, the list id is fixed. (LP: #1024509) + IListManager.get_by_list_id() added. + IListManager.list_ids added. + IMailingList.list_id added. + Several internal APIs that accepted fqdn list names now require list ids, e.g. ISubscriptionService.join() and .find_members(). + IMember.list_id attribute added; .mailing_list is now an alias that retrieves and returns the IMailingList. - list_id added (LP: #1024509)
* General code cleanup.Barry Warsaw2012-04-251-3/+3
| | | | | | | | - Add explicit dependency on zope.event in setup.py. - Use Python 3 compatible syntax for specifying that a class implements an interface, i.e. the @implementer class decorator. - print_function futures. - Whitespace normalization.
* * The `news` runner and queue has been renamed to the more accurate `nntp`.Barry Warsaw2012-03-311-4/+4
| | | | Beta testers can can safely remove `$var_dir/queue/news`.
* Merge the Pipermail eradication branch. The scrubber is also removed.Barry Warsaw2012-03-171-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | * Configuration variable `[mailman]filtered_messages_are_preservable` controls whether messages which have their top-level `Content-Type` filtered out can be preserved in the `bad` queue by list owners. * Configuration section `[scrubber]` removed, as is the scrubber handler. This handler was essentially incompatible with Mailman 3 since it required coordination with Pipermail to store attachments on disk. * Schema additions: - mailinglist.filter_action
| * Eradicate Pipermail. Everything but the scrubber test works. That will takeBarry Warsaw2012-03-151-1/+1
| | | | | | | | some new APIs I suspect.
* | Schema change. After discussion at Pycon, we decided to change "real_name" toBarry Warsaw2012-03-151-5/+5
| | | | | | | | | | | | | | | | | | | | | | "display_name" across the board. * `IMailingList.real_name` -> `IMailingList.display_name` * `IUser.real_name` -> `IUser.display_name` * `IAddress.real_name` -> `IAddress.display_name` * Schema changes: - real_name -> display_name (mailinglist, user, address)
* | * Subscription disabled probe warning notification messages are now sentBarry Warsaw2012-03-142-16/+57
|\ \ | |/ |/| | | without a `Precedence:` header. Given by Mark Sapiro. (LP: #808821)
| * Fixed a logic error and added more conditions to the doctest.Mark Sapiro2012-03-141-0/+38
|/
* * The LMTP server now requires that the incoming message have a `Message-ID`,Barry Warsaw2012-03-131-10/+21
| | | | | | | | | | | otherwise it rejects the message with a 550 error. Also, the LMTP server adds the `X-Message-ID-Hash` header automatically. The `inject` cli command will also add the `X-Message-ID-Hash` header, but it will craft a `Message-ID` header first if one is missing from the injected text. Also, `inject` will always set the correct value for the `original_size` attribute on the message object, instead of trusting a possibly incorrect value if it's already set. The individual `IArchiver` implementations no longer set the `X-Message-ID-Hash` header.
* Clean up of style test code, along with refactoring of corner cases toBarry Warsaw2012-03-121-162/+0
| | | | unittests where they belong.
* * Mailing lists get multiple chains and pipelines. For example, normalBarry Warsaw2012-03-072-11/+11
| | | | | | | | | | | postings go through the `posting_chain` while messages to owners to through `owners_chain`. The default `built-in` chain is renamed to `default-posting-chain` while the `built-in` pipeline is renamed `default-posting-pipeline`. * Schema changes: - start_chain -> posting_chain - pipeline -> posting_pipeline
* Restore the RFC 2369 headers to accepted list posts.Barry Warsaw2012-03-011-8/+24
|
* * Held messages can now be moderated through the REST API. Mailing listBarry Warsaw2012-01-301-2/+2
| | | | | | | | | | | | | | | resources now accept a `held` path component. GETing this returns all held messages for the mailing list. POSTing to a specific request id under this url can dispose of the message using `Action` enums. * `IRequests` interface is removed. Now just use adaptation from `IListRequests` directly (which takes an `IMailingList` object). * `handle_message()` now allows for `Action.hold` which is synonymous with `Action.defer` (since the message is already being held). * `IListRequests.get_request()` now takes an optional `request_type` argument to narrow the search for the given request. - also, print_function is now a standard __future__ import. The template has been updated, but add this to modules as you edit them.
* * Stop adding the X-BeenThere header.Barry Warsaw2011-11-061-68/+11
| | | | | | | * Separate out the RFC 2369 header adding handler. * Dynamically calculate the `List-Id` header instead of storing it in the database. This means it cannot be changed. * Be sure to clean out any digest .mmdf files when the world is reset.
* * Implement the style manager as a utility instead of an attribute hangingBarry Warsaw2011-10-241-2/+3
| | | | | | off the `mailman.config.config` object. * Fixed bogus use of `bounce_processing` attribute (should have been `process_bounces`, with thanks to Vincent Fretin. (LP: #876774)
* Finally, all doctests are named .rstBarry Warsaw2011-09-238-0/+0
|
* * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-302-20/+72
| | | | | | | | | | | | | | | | | | and exposed to the REST API as their integer equivalents. They are stored in the database using Storm's UUID type. - ISubscriptionService.get_member() now takes a UUID - IUserManager.get_user_by_id() now takes a UUID * Moderators and owners can be added via REST (LP: #834130). Given by Stephen A. Goss. - add_member() grows a `role` parameter. - ISubscriptionService.join() grows a `role` parameter. * InvalidEmailAddressError no longer repr()'s its value. * `address` -> `email` for consistency - delete_member() - ISubscriptionService.leave() * Fixed typo in app/subscriptions.py __all__ * AlreadySubscribedError: attributes are now public. * More .txt -> .rst renames.
* Basic infrastructure for fixing bug 827036.Barry Warsaw2011-08-171-1/+12
| | | | | | | | | * Use zope.events to signal when a mailing list has been created or deleted. * Register a handler for the ListDeletedEvent which cleans up member subscriptions. * Relax the criteria for find_members(), both internally and in the REST API, so that the subscriber is not required. E.g. you can now find all members of a mailing list.
* * New REST resource http://.../members/find can be POSTed to in order to findBarry Warsaw2011-08-131-0/+146
| | | | | | member records. Arguments are `subscriber` (email address to search for - required), `fqdn_listname` (optional), and `role` (i.e. MemberRole - optional). (LP: #799612)
* Factor out bounce detection to flufl.bounce.Barry Warsaw2011-07-151-31/+0
|
* Eliminate Utils.get_pattern() and in the process, completely revampBarry Warsaw2011-02-251-0/+167
| | | | | | | | | subscription bans so as not to have to rely on BLOBS or pickles in the database. Also, be sure to include .rst files in both doctests and in the packaged tarballs. With the now awesome reST mode for Emacs, I plan to rename all .txt doctest files to .rst.
* Split member and nonmember moderation.Barry Warsaw2011-01-021-52/+52
| | | | | | | | | | | | | | | | * member-moderation happens at the same place in the built-in chain that the previously named moderation rule happens. nonmember-moderation happens after all the other normal moderation rules. * Handle unsubscribed nonmember posts. Other changes: * Message.senders now filters out Nones and empty strings. * Various test cleanups and simplifications. * More `address` -> `email` fixes. * Give Link class a useful repr. * Fix a potential UnboundLocalError. * Various other small changes.
* Because it was just to damn confusing, rename IAddress.address toBarry Warsaw2011-01-011-11/+23
| | | | | | IAddress.email and IAddress.original_address to IAddress.original_email. From now on we'll use "address" to talk about the IAddress object and "email" to talk about the textual email address.
* Fairly significant change to the way member and nonmember moderation occurs.Barry Warsaw2010-12-291-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | Now, nonmembers are represented by a separate roster of IMembers, the latter which has grown a `moderation_action` enum. When that action is `defer`, then the normal processing rules apply. Anything else and the `moderation` chain is jumped to for a shortcut to moderation (which may include immediate acceptance). TODO: handle unregistered nonmembers. Details: * The member-moderation rule is renamed to just moderation, and handles both members and nonmembers (though the latter must currently be registered). * The moderation rule is moved up in the builtin chain. It is now checked after `approved`, `emergency`, and `loop`, but before the normal moderation checks. This means that nonmember postings will be (by default) held much earlier. * IMember.is_moderated is removed. * IMember.moderation_action is added. * IMailingList.default_member_moderation is removed. * IMailingList.default_member_action and IMailingList.default_nonmember_action are added. * MemberRole.nonmember is added.
* This is part 1 of the merge of Jimmy Bergman's branchBarry Warsaw2010-12-281-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lp:~jimmy-sigint/mailman/restapi_additional_attributes Ostensibly, this adds support for a few additional attributes through the REST API: * default_member_moderation * generic_nonmember_action * member_moderation_action * reply_goes_to_list * send_welcome_msg * welcome_msg However, I had never previously fleshed out the conversion of default_member_moderation and member_moderation_action into the MM3 way of things. That is now done. Non-member moderation still needs to be done. Specific changes: * mailman.chains.base.Chain no longer self registers * The built-in chain gets a new link for checking 'member-moderation'. If this rule matches, it jumps to the 'member-moderation' chain, which checks member_moderation_action and returns a link that jumps to the appropriate terminal chain. * Chain initialization is done by the same auto-detection as rules, handlers, etc. The one tricky thing is that abstract base classes such as Chain and TerminalChainBase can't be instantiated. For now, there's an ugly special case to skip these. * default_member_moderation is now exposed in the IMailingList interface. * Member.is_moderated gets set in the constructor from the mailing list's default_member_moderation. * The 'moderation' rule is renamed 'member-moderation'. TODO: * Work out non-member moderation * Add member_moderation_action to IMailingList * Double check tests for reply_goes_to_list, send_welcome_msg, and welcome_msg
* Fix typo in scan_message(). (LP: #645897)Barry Warsaw2010-09-231-5/+34
|
* Many documentation fixes for better Sphinx output.Barry Warsaw2010-09-087-29/+44
|
* This is a better fix than the previous commit, since it uses a principled ↵Barry Warsaw2010-08-301-2/+2
| | | | approach to finding the bin directory. Thanks go to Gary Poster.
* zope.testrunner 4.0.0b5 changes the working directory that tests are run from.Barry Warsaw2010-08-291-1/+2
|
* Fixes bug LP: #601899; delete list function in rest server.Barry Warsaw2010-07-061-1/+1
|
* No longer touch the Sender or Errors-To headers. We can no longer justifyBarry Warsaw2010-06-291-1/+0
| | | | | setting these based on RFC 5322, and modern MTAs no longer need us to do so for proper bounce processing.
* Chains now fire Zope events in their _process() implementation.Barry Warsaw2010-02-161-55/+39
| | | | Clean up the chains.txt doctest to use this and other recent improvements.