<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mailman.git/src/mailman/app/docs, branch pluggable-components</title>
<subtitle>The GNU Mailing List manager.
</subtitle>
<id>https://git.neuromancer.sk/mailman.git/atom?h=pluggable-components</id>
<link rel='self' href='https://git.neuromancer.sk/mailman.git/atom?h=pluggable-components'/>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/'/>
<updated>2017-08-07T15:39:08Z</updated>
<entry>
<title>Fix coverage, deprecate, but run non-plugin (post|pre)_hooks.</title>
<updated>2017-08-07T15:39:08Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-07-25T19:44:54Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=8addebbf9802e911c06f6a27b7ffff1e0f1d2e57'/>
<id>urn:sha1:8addebbf9802e911c06f6a27b7ffff1e0f1d2e57</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add REST-ability to plugins.</title>
<updated>2017-08-07T15:39:07Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-01T18:53:53Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=a665dccf9404d6f95d8a4587f05d748b504e1f9d'/>
<id>urn:sha1:a665dccf9404d6f95d8a4587f05d748b504e1f9d</id>
<content type='text'>
 - 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 &gt;= 3.1:

   - /3.1/plugins
     Returns a dictionary with plugin names as keys, and their configs
     as values.

   - /3.1/plugins/&lt;plugin_name&gt;
	 Proxies everything to plugin's rest_object, if plugin with such
     name exists and provides a non-null rest_object, else NotFound.
</content>
</entry>
<entry>
<title>Add per-plugin hooks, add docs about plugins.</title>
<updated>2017-08-07T15:39:07Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-01T13:46:48Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=0d4f53b51892866b5cc85ace229b23f4b9bac896'/>
<id>urn:sha1:0d4f53b51892866b5cc85ace229b23f4b9bac896</id>
<content type='text'>
 - 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.
</content>
</entry>
<entry>
<title>Add pluggable components.</title>
<updated>2017-08-07T15:39:07Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-05-31T00:09:09Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=38a86adcdb78c1944c26a5ab8deddff619b33bcf'/>
<id>urn:sha1:38a86adcdb78c1944c26a5ab8deddff619b33bcf</id>
<content type='text'>
 - 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.
</content>
</entry>
<entry>
<title>Rename metadata key for clarity</title>
<updated>2017-08-04T01:13:04Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-08-04T01:13:04Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=9cdcffbc1189a19bc2963cf3d5c86a3d4f1f24a6'/>
<id>urn:sha1:9cdcffbc1189a19bc2963cf3d5c86a3d4f1f24a6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Convert to click for CLI options</title>
<updated>2017-07-22T03:02:05Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-07-22T03:02:05Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=f00b94f18e1d82d1488cbcee6053f03423bc2f49'/>
<id>urn:sha1:f00b94f18e1d82d1488cbcee6053f03423bc2f49</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Simplify the implementation.</title>
<updated>2016-10-17T13:13:32Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2016-10-17T13:13:32Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=d45af03c4f2a560d51631fdfa7c55cd1a98e722c'/>
<id>urn:sha1:d45af03c4f2a560d51631fdfa7c55cd1a98e722c</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Another fix.</title>
<updated>2016-09-16T10:24:19Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2016-09-16T10:24:19Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=511c86916b0e6dea315249a4c44ee3b3503e61c2'/>
<id>urn:sha1:511c86916b0e6dea315249a4c44ee3b3503e61c2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Added unsubscribe instructions to list:member:generic:footer.txt</title>
<updated>2016-08-25T06:35:12Z</updated>
<author>
<name>Francesco Ariis</name>
</author>
<published>2016-08-24T14:36:30Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=fd4dd866b540051782c878e7bb115cc5fa4abaa7'/>
<id>urn:sha1:fd4dd866b540051782c878e7bb115cc5fa4abaa7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reorganize the documentation for better accesibility</title>
<updated>2016-08-21T19:02:11Z</updated>
<author>
<name>Abhilash Raj</name>
</author>
<published>2016-08-21T19:02:11Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=711e2d20617ab85959a2446d610a860bdc306a54'/>
<id>urn:sha1:711e2d20617ab85959a2446d610a860bdc306a54</id>
<content type='text'>
</content>
</entry>
</feed>
