summaryrefslogtreecommitdiff
path: root/src/mailman/interfaces/member.py
Commit message (Collapse)AuthorAgeFilesLines
* Bump copyright years.Barry Warsaw2017-01-041-1/+1
|
* Use `atpublic` for @public instead of internal copy.Barry Warsaw2016-11-291-1/+1
|
* New template system. Closes #249Barry Warsaw2016-07-161-8/+10
| | | | | The new template system is introduced for API 3.1. See ``src/mailman/rest/docs/templates.rst`` for details.
* Import order flake8 plugin.Barry Warsaw2016-03-271-1/+1
| | | | Fix lots of import order errors discovered by the new plugin.
* Clean up the interfaces directory.Barry Warsaw2016-03-251-22/+13
|
* Clean up the core directory.Barry Warsaw2016-03-241-1/+1
| | | | | | | 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.
* Super duper.Barry Warsaw2016-01-261-3/+3
| | | | | * Python 3-ify super() calls. * Remove a bunch of obsolete exception classes.
* Happy New Year.Barry Warsaw2016-01-021-1/+1
|
* Merge the member query fix branch.Barry Warsaw2015-04-141-0/+8
|\
| * Added IMember.subscriber to definitively return how a member is subscribed toBarry Warsaw2015-04-141-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | the mailing list (via preferred address/user or explicit address). IMember.get_member() is defined to return the explicit address when members are subscribed in both ways. IMember.get_memberships() returns a sequence of length 0, 1, or 2 containing all the member records associated with the email address. Fixed the AbstractMemberRoster methods query to properly return subscriptions via the user's preferred address and via an explicit address.
* | Subscription workflows now support bans.Barry Warsaw2015-04-131-1/+1
|/
* Bump copyright years.Barry Warsaw2015-01-041-1/+1
|
* Remove huge amounts of now unnecessary file boilerplate.Barry Warsaw2014-12-221-5/+1
|
* Use print functions consistently through, and update all __future__ imports toBarry Warsaw2014-04-281-1/+1
| | | | | | | | reflect this. Also, mock out sys.stderr on some tests so that their nose2 output is quieter. A few other minor coding style consistencies.
* Bump copyright years.Barry Warsaw2014-01-011-1/+1
|
* Switch to PEP 435 enums from flufl.enums.Barry Warsaw2013-06-181-1/+1
|
* Bump copyright years.Barry Warsaw2013-01-011-1/+1
|
* * Two new events are triggered on membership changes: `SubscriptionEvent`Barry Warsaw2012-12-231-0/+31
| | | | | when a new member joins a mailing list, and an `UnsubscriptionEvent` when a member leaves a mailing list. (LP: #1047286)
* * The link between members and the mailing lists they are subscribed to, isBarry Warsaw2012-09-041-1/+4
| | | | | | | | | | | | | | | now via the RFC 2369 `list_id` instead of the fqdn listname (i.e. posting address). This is because while the posting address can change if the mailing list is moved to a new server, the list id is fixed. (LP: #1024509) + IListManager.get_by_list_id() added. + IListManager.list_ids added. + IMailingList.list_id added. + Several internal APIs that accepted fqdn list names now require list ids, e.g. ISubscriptionService.join() and .find_members(). + IMember.list_id attribute added; .mailing_list is now an alias that retrieves and returns the IMailingList. - list_id added (LP: #1024509)
* copybumpBarry Warsaw2012-01-011-1/+1
|
* * Preferences for addresses, users, and members can be accessed, changed, andBarry Warsaw2011-09-231-4/+4
| | | | | | deleted through the REST interface. Hierarchical, combined preferences for members, and system preferences can be read through the REST interface. (LP: #821438)
* * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-301-6/+6
| | | | | | | | | | | | | | | | | | 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` -> `email` for consistency - delete_member() - ISubscriptionService.leave() * Fixed typo in app/subscriptions.py __all__ * AlreadySubscribedError: attributes are now public. * More .txt -> .rst renames.
* Users subscribed to a mailing list via their preferred address show upBarry Warsaw2011-04-221-0/+12
| | | | | correctly in the REST API's list of members. This even correctly tracks changes in their preferred address.
* Give IMembers a unique member id. We have to do this in order to give them aBarry Warsaw2011-04-221-0/+3
| | | | | | | | | | | | | | | | | | | | | | | path at the root of the resource tree (i.e. /members/X) and because when members can be subscribed by their IUser record (for preferred address), their canonical location cannot contain the address they are subscribed with. When their preferred address changes (without otherwise touching their membership), this address will change and that's not good for a canonical location. Other changes: * Added IMember.member_id attribute * Added ISubscriptionService.get_member() so member records can be retrieve by member id. * We can now get individual members by id via the REST API. * Extend the UniqueIDFactory so that it can take a 'context' (defaulting to None). The context is only used in the testing infrastructure so that separate files can be used for user ids and member ids. Otherwise, we'd have gaps in those sequences. * When *not* in testing mode, ensure that UIDs cannot be reused by keeping a table of all UIDs ever handed out. We *should* never get collisions, but this ensures it. * Clean up mailman.sql
* Add an attribute for getting the IUser record from an IMember record. This isBarry Warsaw2011-04-081-0/+3
| | | | pure convenience by way of an IUserManager lookup.
* Happy New Year.Barry Warsaw2011-01-011-1/+1
|
* Fairly significant change to the way member and nonmember moderation occurs.Barry Warsaw2010-12-291-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Fix the obvious errors identified by pyflakes. Skip false positives (mostlyBarry Warsaw2010-10-081-1/+1
| | | | | due to _() interpolation) and a few other problems that did not have immediately obvious fixes.
* Updates for the latest releases of flufl.enum and flufl.i18n.Barry Warsaw2010-05-021-1/+1
|
* Rip out lazr.restful and replace it with restish. This simpifies a lot of theBarry Warsaw2010-02-231-7/+0
| | | | | REST architecture, at the expense of a few features, and less support. So far so good though.
* Happy New Year.Barry Warsaw2010-01-011-1/+1
|
* Some corner case tests.Barry Warsaw2009-12-281-0/+1
|
* * Leave a mailing list via the REST API.Barry Warsaw2009-12-281-0/+15
| | | | | | * delete_member(): If the address is not associated with a member, raise NotAMemberError. * NotAMemberError -> interfaces/member.py
* * Add REST interface for joining a mailing list.Barry Warsaw2009-12-281-3/+23
| | | | | | * add_member() now returns the newly created IMember. * Reorganized several exceptions and exposed them to the REST API. * Added NoSuchListError.
* Add REST API for subscription services.Barry Warsaw2009-12-271-0/+4
|
* Push the source directory into a 'src' subdirectory so that zc.buildout worksBarry Warsaw2009-01-251-0/+187
correctly regardless of how it's used.