| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
| |
- Catches all exceptions raised when running a plugins (pre|post)
_hooks. If its pre_hook raises an exception, the plugin is disabled
and removed, so its post_hook will not be run and its components
will not be loaded. If its post_hook raises an exception we just
continue and hope for the best.
|
| |
|
|
| |
- Allows to better loop over pluging configs and their names.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Closes #255
As of Python 3.5, PEP 475 gets in our way. Runners with long time.sleep()'s
in their _snooze() method (e.g. the retry runner) will have their system call
implemented time.sleep() automatically retried at the C layer. The only
reliable way to prevent this is to raise an exception in the signal handler.
The standard run() method automatically suppresses this exception, meaning,
it's caught and ignored, but effectively breaks the run() loop, which is just
what we want.
The lmtp and rest runners implement their own run loops, so they also have to
handle this exception, by ignoring it.
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| | | |
|
| |\ \
| |/
|/| |
|
| | | |
|
| | | |
|
| |/ |
|
| |
|
|
| |
Fixes #283
|
| | |
|
| | |
|
| |
|
|
|
| |
The new template system is introduced for API 3.1. See
``src/mailman/rest/docs/templates.rst`` for details.
|
| |
|
|
|
|
|
|
|
| |
* Add a version_info field which is a better way to do ordered
comparisions of the API version.
* All subresources now get their .api attribute set automatically, if
they are passed back through the ObjectRouter. No more fiddling with
context['api'] (unless of course, they don't make a roundtrip through
the main ObjectRouter loop.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Fix the last few violations of the import rules.
|
| |
|
|
| |
This allows us to import it in more places without threat of import errors.
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
* Python 3-ify super() calls.
* Remove a bunch of obsolete exception classes.
|
| |
|
|
|
|
| |
Link.__init__() can now take an IRule or the string naming a rule, which
will be looked up in config.rules. Similarly, it can take an IChain or
the name of a chain.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
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 `yield from` wherever appropriate.
* Use SA's .one_or_none() where appropriate.
- Fix a bug in MailingList.pass_extensions.
- Use ValueError in other places for consistency.
- Remove unreached/nonsense code.
- Simplify the SubscriptionService.find_member() and .find_members()
implementations.
- Boost coverage.
|
| | |
|
| |
|
|
|
|
|
| |
* digestable -> digests_enabled
* nondigestable: removed
* Exposed digests_enabled, digest_send_periodic, digest_volume_frequency in
REST.
|
| |
|
|
|
|
| |
Fixes: #163
Adapt unit tests.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
(Closes #141). Also, don't enqueue a particular digest if there are no
recipients for that digest.
|
| |
|
|
|
|
| |
`X-Message-ID-Hash` although the latter is still included for backward
compatibility. Also be sure that all places which add the header use the
same algorithm.
|
| |
|
|
| |
`MailmanException` has been removed; use `MailmanError` everywhere.
|
| |
|
|
|
|
|
| |
Given by Aurélien Bompard, tweaked by Barry Warsaw.
Remove the inaccurate confirmation url and admindb urls from the substitution
dictionaries for postauth.txt and posthold.txt, and the templates.
|
| | |
|
| |\ |
|