summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'pluggable-workflows' into pluginpluginJ08nY2017-08-0750-959/+1918
|\
| * Add more tests for coverage.J08nY2017-08-075-4/+82
| |
| * Save workflows name in Pendable PEND_TYPE.J08nY2017-08-074-24/+45
| | | | | | | | | | | | - 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.
| * Move workflow tests to mailman.workflows.J08nY2017-08-074-0/+0
| |
| * Remove [Un]SubscriptionConfirmationNeeded events, send msg in workflows.J08nY2017-08-074-79/+23
| |
| * Refactor the duplicate workflow mixins.J08nY2017-08-072-158/+88
| |
| * Migrate the [un]subscription_policy attribute.J08nY2017-08-0729-719/+620
| | | | | | | | | | | | | | | | | | - 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.
| * Initialize the workflows.J08nY2017-08-073-0/+37
| |
| * Split unsubscription workflow into mixins.J08nY2017-08-072-2/+309
| |
| * Save the complete workflow stack, not only last step.J08nY2017-08-077-34/+215
| |
| * Split subscription workflow into mixins.J08nY2017-08-072-1/+422
| |
| * Make workflows implement their interfaces.J08nY2017-08-074-19/+37
| |
| * Move workflows from app.subscriptions to workflows.builtin.J08nY2017-08-073-473/+539
| |
| * Create mailman.workflows package. Move base Workflow there.J08nY2017-08-078-45/+98
| | | | | | | | | | - Also introduce IWorkflow, ISubscriptionWorkflow, IUnsubscriptionWorkflow.
| * Instantiate components only in add_components, not at lower levels.J08nY2017-08-072-15/+16
| | | | | | | | | | | | - 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.
* | Merge branch 'pluggable-components' into pluginJ08nY2017-08-0726-181/+882
|\ \
| * | Fix coverage, deprecate, but run non-plugin (post|pre)_hooks.pluggable-componentsJ08nY2017-08-079-25/+94
| | |
| * | Ignore plugin started subprocesses in master main loop.J08nY2017-08-071-0/+7
| | |
| * | Add new logger which plugins can use.J08nY2017-08-073-0/+6
| | |
| * | Don't fail when plugins pre_hook or post_hook fails.J08nY2017-08-072-13/+36
| | | | | | | | | | | | | | | | | | | | | | | | - 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.
| * | Make config.plugin_configs yield a dict with plugin names.J08nY2017-08-074-11/+13
| | | | | | | | | | | | - Allows to better loop over pluging configs and their names.
| * | Add optional external configuration to plugins.J08nY2017-08-074-1/+12
| | | | | | | | | | | | | | | - Adds an optional 'conriguration' option similar to the one in [mta] which plugins can use to load their specific configs from.
| * | Add REST-ability to plugins.J08nY2017-08-077-2/+322
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
| * | Pretty print dicts in dump_json.J08nY2017-08-071-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
| * | Add per-plugin hooks, add docs about plugins.J08nY2017-08-0711-87/+250
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
| * | Add pluggable components.J08nY2017-08-0713-42/+132
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
* | Merge branch 'list-style-descriptions' into pluginJ08nY2017-08-078-10/+41
|\ \ | |/ |/|
| * Add description attribute to IStyle, expose it in REST.J08nY2017-08-078-10/+41
|/
* Merge branch 'rename-metadata-key' into 'master'Barry Warsaw2017-08-0427-115/+355
|\ | | | | | | | | | | Rename metadata key for clarity Compose bounce messages so that they can be properly translated See merge request !304
| * Rename metadata key for clarityBarry Warsaw2017-08-0427-115/+355
|/
* Merge branch 'fix-hangs' into 'master'Barry Warsaw2017-07-271-1/+2
|\ | | | | | | | | Set a timeout on the lock acquisition See merge request !305
| * Set a timeout on the lock acquisitionBarry Warsaw2017-07-271-1/+2
|/
* Ensure that various rules set a reason.Barry Warsaw2017-07-2633-45/+619
|\ | | | | | | Closes #368
| * Ensure all holds/rejects have a reason.Mark Sapiro2017-07-2633-45/+619
|/
* Convert to click for CLI options.Barry Warsaw2017-07-2281-4101/+4217
|\ | | | | | | | | Closes #319 and #346
| * Convert to click for CLI optionsBarry Warsaw2017-07-2281-4101/+4217
|/
* Merge branch '34-no-more' into 'master'Barry Warsaw2017-07-144-7/+11
|\ | | | | | | | | | | | | Python 3.4 no more! Closes #373 See merge request !302
| * Python 3.4 no more!Barry Warsaw2017-07-134-7/+11
|/
* Merge branch 'no_senders' into 'master'Barry Warsaw2017-07-018-8/+117
|\ | | | | | | | | | | | | Added a rule to discard messages with no valid sender address. Closes #369 See merge request !297
| * Added a rule to discard messages with no valid sender address.Mark Sapiro2017-06-308-8/+117
|/
* Merge branch 'prefix' into 'master'Barry Warsaw2017-06-303-2/+25
|\ | | | | | | | | | | | | Fixed an AttributeError in subject prefixing. Closes #359 See merge request !295
| * Fixed an AttributeError in subject prefixing.Mark Sapiro2017-06-303-2/+25
|/
* Merge branch 'senders' into 'master'Barry Warsaw2017-06-303-2/+20
|\ | | | | | | | | | | | | Ignore syntactically invalid sender addresses. Closes #229 See merge request !294
| * Ignore syntactically invalid sender addresses.Mark Sapiro2017-06-303-2/+20
|/
* Merge branch 'listmanager' into 'master'Barry Warsaw2017-06-246-43/+97
|\ | | | | | | | | IListManager.get() now accepts both List-IDs and FQDN list names. See merge request !293
| * IListManager.get() now accepts both List-IDs and FQDN list names.Barry Warsaw2017-06-246-43/+97
|/
* Minor typo.Barry Warsaw2017-06-171-1/+1
|
* Merge branch 'pipelines-dynamical-instantiation' into 'master'Barry Warsaw2017-06-175-79/+144
|\ | | | | | | | | Move pipelines to their own package, instantiate them dynamically. See merge request !287
| * Move pipelines to their own package, instantiate them dynamically.pipelines-dynamical-instantiationJ08nY2017-06-175-79/+144
|/
* Merge branch 'find-components' into 'master'Barry Warsaw2017-06-179-70/+214
|\ | | | | | | | | Provide a better way to avoid instantiating some components See merge request !291