| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We did not previously complete the renaming of the templates. Rename:
* user:ack:welcome -> list:user:notice:welcome
* user:ack:goodbye -> list:user:notice:goodbye
The new names are what are actually used in send_welcome_message() and
send_goodbye_message() so the old names were actually never used.
NOTE: If you added welcome or goodbye templates through REST from git head,
the old names will not be used. Given that this wasn't a feature in 3.0, and
the above use case is very unlikely, I've decided not to do a migration. If
anybody is affected, the changes can be made manually in withlist.
Closes: #337
|
| |
|
|
|
| |
Added more documentation on config.mailman.listname_chars.
Made a couple of minor tweaks.
|
| |
|
|
|
|
| |
tests for for the exceptions.
Enhanced the InvalidListNameError exception to return the invalid name.
|
| |
|
|
| |
messages between python versions.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Between the creation of a subscription workflow and its approval, the
user may have been merged with another user. In this case, use the
associated address to find the new user.
|
| |
|
|
|
|
| |
Restore the attributes in the order they are declared in
`SAVE_ATTRIBUTES` to allow for dependencies between attributes (required
by the `SubscriptionWorkflow`).
|
| | |
|
| |
|
|
|
| |
Messages sent to the list's moderators now include the actual recipient
addresses. Given by Tom Briles.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Also:
* Ignore coverage in the testing submodule.
* Remove some unreachable code.
* Spelling.
* Fix a bug in run_thru().
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
| |
* events
* notices
* handlers
Also, be sure to do only one `leave` command per email.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
The new template system is introduced for API 3.1. See
``src/mailman/rest/docs/templates.rst`` for details.
|
| |
|
|
|
| |
Nonmember subscriptions are removed when one of the addresses controlled by
a user is subscribed as a member. Given by Aditya Divekar. (Closes #237)
|
| | |
|
| | |
|
| |
|
|
| |
Fix lots of import order errors discovered by the new plugin.
|
| |
|
|
|
|
|
|
| |
* Get rid of explicit __all__ settings and use the @public decorator.
* Get rid of ^L's
* Use expected_count argument for get_queue_messages()
* Various code modernizations.
* Other minor changes to make flake8 happy.
|
| |
|
|
|
|
|
|
| |
* Update some comments.
* Slightly rewrite a conditional test.
* Coding style fixes.
* Add a convenience to get_queue_message().
* Add NEWS.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
This refactors the setting of a user's preferred address to the first in
their list of linked addresses.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Increase coverage.
Add ISubscriptionService.find_member() as per discussion.
|
| |
|
|
|
|
| |
use len() and slicing on SQLAlchemy query results. We also don't need to
list()-ify the results in the tests. This isn't perfect, but at least it
doesn't introduce yet another layer violation.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
their own module inside the mailman.app package. With the latter, remove the
"all lists" functionality and require the mlist argument. We'll handle the
"all lists" use case higher up the stack.
Also, rename the send-digests handler digests since we'll next add the bump
functionality.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add a `mailman send-digests` subcommand which replaces the functionality of
the MM2.1 senddigests.py cronjob.
* Use mlist.data_path where appropriate instead of crafting it from
config.LIST_DATA_DIR. This makes it more consistent to switch to using the
list-id as the data subdirectory.
* Refactor the to_digest handler so that we can implement
maybe_send_digest_now() for the internal API.
* Fix some typos in subcommand --help summaries.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Additional cleanups by Barry.
Fix the SubscriptionService.find_members SQL query on PostgreSQL.
Assert that an unsupported use case is actually unsupported.
Various little clean ups.
|
| | |
|