| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Removes pre_hook, post_hook and ext_dir. With the latter being
unused. Warns on startup if the hooks are present in config.
- Adds IPlugin interface with pre_hook and post_hook methods.
- Adds 'class' config parameter to plugins, which can be set to
a class implementing the IPlugin interface, it will be
initialized once on Mailman's startup, then before the DB
setup the pre_hook will be run, after DB and other components
the post_hook will be run. Plugin instances are stored in the
config.plugins dict, with keys being their configuration section
names.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Adds the notion of a 'plugin'.
- A plugin has a package path and a flag specifying whether
it's enabled or not.
- Adds a find_pluggable_components function similar to the
find_components one. This one dynamically searches not only
the mailman package but all of plugins.
- e.g. find_pluggable_components('rules', IRule) finds
all IRule components in mailman.rules but also in
example_plugin.rules for plugin names example_plugin.
- Uses the find_pluggable_components function in place of
find_components when searching for Rules, Handlers, Chains,
EmailCommands, and Styles.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Hopefully this will help fix intermittent failures on the Gitlab CI runners.
2 minutes appears to be too short since the MySQL tests can take longer than
that to get to the lock claim attempt.
|
| | |
|
| |
|
|
|
|
|
|
| |
Also:
* Change doctest cleanups to be an ExitStack.
* Added [dmarc]cache_lifetime setting.
* Cleanup pass through dmarc-mitigation.rst.
* Be sure the cached org domain file is cleaned up when the world is reset.
|
| |
|
|
|
|
| |
This doesn't solve the underlying problem of why child processes (both
runners and master) occasionally don't exit, but it prevents ugly
timeouts in the CI infrastructure when that happens.
|
| | |
|
| | |
|
| |
|
|
| |
where needed.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
| |
Closes #230
|
| | |
|
| |
|
|
|
|
|
|
| |
``mailman shell`` now supports readline history if you set the
``[shell]history_file`` variable in mailman.cfg. Also, many useful
names are pre-populated in the namespace of the shell. (Closes: #228)
With test coverage.
|
| |
|
|
|
|
| |
Closes #223
Also: `mailman digests` has grown --verbose and -dry-run options.
|
| | |
|
| |
|
|
| |
Closes #225
|
| | |
|
| |
|
|
|
|
|
| |
This suppresses all errors in the file. Use `noqa`, although pep8
doesn't honor this for all errors.
There may be a plugin which helps.
|
| |
|
|
| |
Fix lots of import order errors discovered by the new plugin.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
* Reorder some add_argument() parameters.
* Reword some help text.
* Reword some of the doctest language.
* Clean up whitespace.
* Minor coding style change in unittests.
* Add another unittest.
* Fix a docstring (not related to these change).
* Add NEWS.
|
| |
|
|
|
|
| |
Added tests for domain option
Updated docs for creating list from shell
|
| |
|
|
|
|
|
|
|
|
|
| |
We now have an IAPI interface which defines methods to convert to/from
UUIDs to their REST representations, and to calculate the API-homed full
URL path to a resource. Add implementations API30 and API31 to handle
the two different implementations so far. This also simplifies the
various path_to() calls.
Also: Add support for diff_cover to tox.ini to check that all
differences against the master branch have full test coverage.
|
| |
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
| |
subscription roles. Also, the positional "list" argument can now accept
list names or list-ids.
|
| |
|
|
|
|
|
| |
via the ``<api>/lists/<list-id>/digest`` end-point. GETting this resource
returns the ``next_digest_number`` and ``volume`` as the same values
accessible through the list's configuraiton resource. POSTing to the resource
with either ``send=True``, ``bump=True``, or both invokes the given action.
|
| |
|
|
|
| |
Fix a buglet where if maybe_send_digest_now() was called before a digest has
been prepared, a FileNotFoundError would be raised.
|
| |
|
|
|
|
|
|
|
| |
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.
|