summaryrefslogtreecommitdiff
path: root/src/mailman/interfaces/subscriptions.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
|
* Manual merge.Barry Warsaw2016-10-251-2/+2
| | | | * Rebased, cleaned up, and test improvement.
* Refactor.Barry Warsaw2016-10-181-2/+2
|
* Split registration (subscription) and unsubscription:Barry Warsaw2016-09-131-1/+14
| | | | | | | | * events * notices * handlers Also, be sure to do only one `leave` command per email.
* Fix many failures.Barry Warsaw2016-09-081-0/+63
| | | | Also, document more APIs.
* Checkpointing.Barry Warsaw2016-09-011-2/+88
|
* Add NEWS, tweak an interface, and rewrite a unit test.Barry Warsaw2016-04-181-5/+6
|
* Extend ISubscriptionService interface.Harshit Bansal2016-04-181-0/+15
| | | | | | Add documentation. Extend ISubscriptionService interface.
* Clean up the interfaces directory.Barry Warsaw2016-03-251-14/+9
|
* Closes #199Barry Warsaw2016-03-221-6/+4
| | | | | New subscription requests are rejected if there is already one pending. With thanks to Anirudh Dahiya. (Closes #199)
* Correct spacingAnirudh Dahiya2016-03-221-1/+1
|
* Correct space in error messageAnirudh Dahiya2016-03-221-1/+1
|
* Incorporates suggested changesAnirudh Dahiya2016-03-221-1/+11
|
* Add NEWS and tweak.Barry Warsaw2016-01-131-4/+2
|
* Allow fuzz search for members in SubscriptionServiceAurélien Bompard2016-01-131-0/+3
|
* Refactor some tests and documentation.Barry Warsaw2016-01-071-7/+38
| | | | | | Increase coverage. Add ISubscriptionService.find_member() as per discussion.
* Happy New Year.Barry Warsaw2016-01-021-1/+1
|
* The SubscriptionWorkflow and Registar classes now have both a token and aBarry Warsaw2015-04-151-40/+12
| | | | | | | | | | | | "token owner". The latter describes who owns the token --i.e. which phase of the workflow is being waited on. It can either be no one, the subscriber, or the moderator. Tokens and token owners are properly initialized and reset when the workflow is completed, so we always know which step of the process is being waited on. Also, remove ISubscriptionService.join() since this will now be handled by the IRegistrar adapter.
* * Refactor add_member() so that it uses a RequestRecord namedtuple.Barry Warsaw2015-03-211-0/+16
| | | | | | * RequestRecord contains no password key so these are not part of the held requests database any more. * Pending record contains `email` now instead of `address`.
* 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
|
* Bump copyright years.Barry Warsaw2013-01-011-1/+1
|
* * The link between members and the mailing lists they are subscribed to, isBarry Warsaw2012-09-041-13/+13
| | | | | | | | | | | | | | | 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)
* Schema change. After discussion at Pycon, we decided to change "real_name" toBarry Warsaw2012-03-151-3/+3
| | | | | | | | | | | "display_name" across the board. * `IMailingList.real_name` -> `IMailingList.display_name` * `IUser.real_name` -> `IUser.display_name` * `IAddress.real_name` -> `IAddress.display_name` * Schema changes: - real_name -> display_name (mailinglist, user, address)
* copybumpBarry Warsaw2012-01-011-1/+1
|
* * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-301-6/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * LP: #834130 add moderators and owners through REST API w/testsStephen A. Goss2011-08-251-1/+3
|/
* Basic infrastructure for fixing bug 827036.Barry Warsaw2011-08-171-1/+1
| | | | | | | | | * Use zope.events to signal when a mailing list has been created or deleted. * Register a handler for the ListDeletedEvent which cleans up member subscriptions. * Relax the criteria for find_members(), both internally and in the REST API, so that the subscriber is not required. E.g. you can now find all members of a mailing list.
* * New REST resource http://.../members/find can be POSTed to in order to findBarry Warsaw2011-08-131-0/+140
member records. Arguments are `subscriber` (email address to search for - required), `fqdn_listname` (optional), and `role` (i.e. MemberRole - optional). (LP: #799612)