| Commit message (Collapse) | Author | Age | Files | Lines |
| |\ |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
- Saves workflow name in as Pendables type, so that it is correctly
restored even if the MailingLists sub/unsub policy changes
while it was pending.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
- This is quite a huge commit, since it changes the type of the
MailingList.subscription_policy and unsubscription_policy
attributes to the new names of pluggable workflows, in all
occurences.
- Also adds a migration to migrate the attributes to the new types.
- Adds tests for the migration.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
- Also introduce IWorkflow, ISubscriptionWorkflow,
IUnsubscriptionWorkflow.
|
| | |
| |
| |
| |
| |
| | |
- The scan_module and find_components functions are also useful
when they don't instantiate the components they load, and
instantiation is left to add_components.
|
| |\ \ |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- 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.
|
| | | |
| | |
| | |
| | |
| | | |
- Adds an optional 'conriguration' option similar to the one in
[mta] which plugins can use to load their specific configs from.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- Adds the rest_object method to the IPlugin interface. This method
is called by the REST api to route requests to the plugin's REST
api. All attributes are proxied, so the object becomes a true
REST object in the ObjectRouter hierarchy. For example see the
RESTExample and ExamplePlugin classes in mailman.testing.plugin.
The plugin might return None from this method, in which case
all calls to it's REST api route will return 404 NotFound.
- Adds new routes to the REST api. For version >= 3.1:
- /3.1/plugins
Returns a dictionary with plugin names as keys, and their configs
as values.
- /3.1/plugins/<plugin_name>
Proxies everything to plugin's rest_object, if plugin with such
name exists and provides a non-null rest_object, else NotFound.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- Makes dump_json documentation helper recursively print dicts with
indentation. So for example {'name': {'a':1, 'b':2}, 'other': test}
becomes:
name:
a: 1
b: 2
other: test
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- 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.
|
| |\ \
| |/
|/| |
|
| |/ |
|
| |\
| |
| |
| |
| |
| | |
Rename metadata key for clarity
Compose bounce messages so that they can be properly translated
See merge request !304
|
| |/ |
|
| |\
| |
| |
| |
| | |
Set a timeout on the lock acquisition
See merge request !305
|
| |/ |
|
| |\
| |
| |
| | |
Closes #368
|
| |/ |
|
| |\
| |
| |
| |
| | |
Closes #319 and #346
|
| |/ |
|
| |\
| |
| |
| |
| |
| |
| | |
Python 3.4 no more!
Closes #373
See merge request !302
|
| |/ |
|
| |\
| |
| |
| |
| |
| |
| | |
Added a rule to discard messages with no valid sender address.
Closes #369
See merge request !297
|
| |/ |
|
| |\
| |
| |
| |
| |
| |
| | |
Fixed an AttributeError in subject prefixing.
Closes #359
See merge request !295
|
| |/ |
|
| |\
| |
| |
| |
| |
| |
| | |
Ignore syntactically invalid sender addresses.
Closes #229
See merge request !294
|
| |/ |
|
| |\
| |
| |
| |
| | |
IListManager.get() now accepts both List-IDs and FQDN list names.
See merge request !293
|
| |/ |
|
| | |
|
| |\
| |
| |
| |
| | |
Move pipelines to their own package, instantiate them dynamically.
See merge request !287
|
| |/ |
|
| |\
| |
| |
| |
| | |
Provide a better way to avoid instantiating some components
See merge request !291
|