summaryrefslogtreecommitdiff
path: root/src/mailman/app/docs
Commit message (Collapse)AuthorAgeFilesLines
* PR288 vettedBarry Warsaw2017-08-291-121/+0
|
* Rename metadata key for clarityBarry Warsaw2017-08-041-10/+54
|
* Convert to click for CLI optionsBarry Warsaw2017-07-221-2/+5
|
* Simplify the implementation.Barry Warsaw2016-10-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | This merges the SubscriptionManager and UnsubscriptionManager into a single SubscriptionManager implementation that handles both register() and unregister(). This allows us to use direct class-based adaptation instead of the more clunky getAdapter() API. We can also eliminate the funky _get_workflow() implementation detail. This has a couple of side-effects. .confirm() must lookup the token in the pendings database and pull out the pending type, dispatching to the proper class depending on the type, or raising a LookupError if the token is None or there is no pendable associated with the given token. This feels like an acceptable trade-off. However, this *also* means that IWorkflowStateManager must lose its 'name' argument in its methods. That's because we won't actually know the name until its too late. Honestly, the name wasn't providing much value anyway (it was always the subclass's name), so losing that seems fine too. The complication here is that the name was a primary key in the 'workflowstate' table, so we need to add its removal in the database migration.
* Another fix.Barry Warsaw2016-09-161-3/+3
|
* Added unsubscribe instructions to list:member:generic:footer.txtFrancesco Ariis2016-08-251-4/+4
|
* Reorganize the documentation for better accesibilityAbhilash Raj2016-08-211-0/+8
|
* New template system. Closes #249Barry Warsaw2016-07-162-11/+7
| | | | | The new template system is introduced for API 3.1. See ``src/mailman/rest/docs/templates.rst`` for details.
* Clean up the core directory.Barry Warsaw2016-03-241-1/+1
| | | | | | | mailman/core/errors.py is gone now. We had a duplicate base exception which now always comes from mailman/interfaces/errors.py. Obsolete/unused exceptions are remove. The other exceptions are moved to better locations.
* Fix cross-posting held on more than one list.Barry Warsaw2016-03-081-30/+6
| | | | | | | | | | | Closes #176 Also: * IMessageStore no longer raises a ValueError if the Message-ID already exists in the store; it just returns None. * The internal handle_message() function no longer takes a `preserve` argument, since messages are never removed from the IMessageStore.
* Refactor some tests and documentation.Barry Warsaw2016-01-071-176/+0
| | | | | | Increase coverage. Add ISubscriptionService.find_member() as per discussion.
* Make the members request pageableAurélien Bompard2016-01-061-1/+1
|
* Make sure that Pendables always have a typeAurélien Bompard2015-12-161-0/+1
|
* Neither archive messages nor digest messages get decorated.Barry Warsaw2015-09-131-8/+0
|
* Decorate bulk emails by defaultAurélien Bompard2015-09-081-0/+19
|
* According to RFC 2369, the URL should be between bracketsAurélien Bompard2015-06-301-1/+1
|
* Remove old APIs handle_subscription() and hold_subscription().Barry Warsaw2015-05-021-122/+61
|
* Move a doctest to the right directory.Barry Warsaw2015-04-161-344/+0
|
* Rewrite the subscription service doctest for the updated API.Barry Warsaw2015-04-151-145/+117
|
* Fix regression.Barry Warsaw2015-04-131-1/+0
|
* 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
|