<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mailman.git/src/mailman/model/docs/membership.txt, branch master</title>
<subtitle>The GNU Mailing List manager.</subtitle>
<id>https://git.neuromancer.sk/mailman.git/atom/src/mailman/model/docs/membership.txt?h=master</id>
<link rel='self' href='https://git.neuromancer.sk/mailman.git/atom/src/mailman/model/docs/membership.txt?h=master'/>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/'/>
<updated>2011-08-30T23:11:19Z</updated>
<entry>
<title>* User and Member ids are now proper UUIDs.  The UUIDs are pended as unicodes,</title>
<updated>2011-08-30T23:11:19Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2011-08-30T23:11:19Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=0664713d4f7e30b0b56b1ce00ccf3367f416c901'/>
<id>urn:sha1:0664713d4f7e30b0b56b1ce00ccf3367f416c901</id>
<content type='text'>
  and exposed to the REST API as their integer equivalents.  They are stored
  in the database using Storm's UUID type.
  - ISubscriptionService.get_member() now takes a UUID
  - IUserManager.get_user_by_id() now takes a UUID
* Moderators and owners can be added via REST (LP: #834130).  Given by
  Stephen A. Goss.
  - add_member() grows a `role` parameter.
  - ISubscriptionService.join() grows a `role` parameter.
* InvalidEmailAddressError no longer repr()'s its value.
* `address` -&gt; `email` for consistency
  - delete_member()
  - ISubscriptionService.leave()
* Fixed typo in app/subscriptions.py __all__
* AlreadySubscribedError: attributes are now public.
* More .txt -&gt; .rst renames.
</content>
</entry>
<entry>
<title>Complete the ability to change a subscription address, both internally and via</title>
<updated>2011-04-26T02:23:05Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2011-04-26T02:23:05Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=3f705f533191e4dd50a615c5692b00905b178e0a'/>
<id>urn:sha1:3f705f533191e4dd50a615c5692b00905b178e0a</id>
<content type='text'>
the REST API.  (LP: #643949)

* New resource path in REST API: /addresses/&lt;email&gt;/memberships gets all the
  memberships for a given email address.
* In the REST API, PUTting or PATCHing a list configuration now returns a 204
  (No Content) success code instead of a 200 success code with an empty body.
* When a user is subscribed with their preferred address, changing the
  preferred address also changes all subscriptions.
* When a user is subscribed with a specific address, their subscription can be
  changed to any verified address they control.
* Use a new naming scheme for doctests with multiple mailing lists.
</content>
</entry>
<entry>
<title>Refactor .subscribe() from IAddress to IMailingList.</title>
<updated>2011-04-16T16:55:48Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2011-04-16T16:55:48Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=3db11b8bcb7194b5672426ad057f965734134a59'/>
<id>urn:sha1:3db11b8bcb7194b5672426ad057f965734134a59</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add an attribute for getting the IUser record from an IMember record.  This is</title>
<updated>2011-04-08T09:49:54Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2011-04-08T09:49:54Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=70e5bc5fb4fff267e649c3b6581dff2dee96bf53'/>
<id>urn:sha1:70e5bc5fb4fff267e649c3b6581dff2dee96bf53</id>
<content type='text'>
pure convenience by way of an IUserManager lookup.
</content>
</entry>
<entry>
<title>* Give users a unique, random, immutable user id.</title>
<updated>2011-03-18T19:01:57Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2011-03-18T19:01:57Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=dee26f391da59c68a23f8fb960dff9ebd879e916'/>
<id>urn:sha1:dee26f391da59c68a23f8fb960dff9ebd879e916</id>
<content type='text'>
* Find users by user_id via the user manager.
* Extend the repr of users to include the user id.
</content>
</entry>
<entry>
<title>Because it was just to damn confusing, rename IAddress.address to</title>
<updated>2011-01-01T16:28:29Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2011-01-01T16:28:29Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=3f1f5a2826feb9c5fb202ae266ba7f0ff76ebe21'/>
<id>urn:sha1:3f1f5a2826feb9c5fb202ae266ba7f0ff76ebe21</id>
<content type='text'>
IAddress.email and IAddress.original_address to IAddress.original_email.  From
now on we'll use "address" to talk about the IAddress object and "email" to
talk about the textual email address.
</content>
</entry>
<entry>
<title>* Simplify the membership.txt doctest.</title>
<updated>2010-12-31T18:17:16Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2010-12-31T18:17:16Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=d0f8e9e03d3c55641165b73a4d8971ec514a9cdc'/>
<id>urn:sha1:d0f8e9e03d3c55641165b73a4d8971ec514a9cdc</id>
<content type='text'>
* Add test to show that the incoming runner adds all sender addresses to
  the global user manager.
* New doctest helper: dump_list()
* Other random cleanups.
</content>
</entry>
<entry>
<title>Fairly significant change to the way member and nonmember moderation occurs.</title>
<updated>2010-12-30T04:54:08Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2010-12-30T04:54:08Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=534e90fea33c52585c74fa9127cca8b70178d5e0'/>
<id>urn:sha1:534e90fea33c52585c74fa9127cca8b70178d5e0</id>
<content type='text'>
Now, nonmembers are represented by a separate roster of IMembers, the latter
which has grown a `moderation_action` enum.  When that action is `defer`, then
the normal processing rules apply.  Anything else and the `moderation` chain
is jumped to for a shortcut to moderation (which may include immediate
acceptance).

TODO: handle unregistered nonmembers.

Details:

 * The member-moderation rule is renamed to just moderation, and handles both
   members and nonmembers (though the latter must currently be registered).
 * The moderation rule is moved up in the builtin chain.  It is now checked
   after `approved`, `emergency`, and `loop`, but before the normal moderation
   checks.  This means that nonmember postings will be (by default) held much
   earlier.
 * IMember.is_moderated is removed.
 * IMember.moderation_action is added.
 * IMailingList.default_member_moderation is removed.
 * IMailingList.default_member_action and
   IMailingList.default_nonmember_action are added.
 * MemberRole.nonmember is added.
</content>
</entry>
<entry>
<title>This is part 1 of the merge of Jimmy Bergman's branch</title>
<updated>2010-12-28T18:14:41Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2010-12-28T18:14:41Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=c89087190a641da1353b394a722cf9cee3792394'/>
<id>urn:sha1:c89087190a641da1353b394a722cf9cee3792394</id>
<content type='text'>
lp:~jimmy-sigint/mailman/restapi_additional_attributes

Ostensibly, this adds support for a few additional attributes through the REST
API:
 * default_member_moderation
 * generic_nonmember_action
 * member_moderation_action
 * reply_goes_to_list
 * send_welcome_msg
 * welcome_msg

However, I had never previously fleshed out the conversion of
default_member_moderation and member_moderation_action into the MM3 way of
things.  That is now done.  Non-member moderation still needs to be done.

Specific changes:

* mailman.chains.base.Chain no longer self registers
* The built-in chain gets a new link for checking 'member-moderation'.  If
  this rule matches, it jumps to the 'member-moderation' chain, which checks
  member_moderation_action and returns a link that jumps to the appropriate
  terminal chain.
* Chain initialization is done by the same auto-detection as rules, handlers,
  etc.  The one tricky thing is that abstract base classes such as Chain and
  TerminalChainBase can't be instantiated.  For now, there's an ugly special
  case to skip these.
* default_member_moderation is now exposed in the IMailingList interface.
* Member.is_moderated gets set in the constructor from the mailing list's
  default_member_moderation.
* The 'moderation' rule is renamed 'member-moderation'.

TODO:

* Work out non-member moderation
* Add member_moderation_action to IMailingList
* Double check tests for reply_goes_to_list, send_welcome_msg, and welcome_msg
</content>
</entry>
<entry>
<title>Many documentation fixes for better Sphinx output.</title>
<updated>2010-09-09T02:35:20Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2010-09-09T02:35:20Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=1726b47b6b9bd44d6f2240372d278c4bd22eaa7b'/>
<id>urn:sha1:1726b47b6b9bd44d6f2240372d278c4bd22eaa7b</id>
<content type='text'>
</content>
</entry>
</feed>
