summaryrefslogtreecommitdiff
path: root/src/mailman/app/subscriptions.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Checkpointing.Barry Warsaw2015-04-141-1/+1
|
* The SubscriptionWorkflow class doesn't need to include the expiry date in itsBarry Warsaw2015-04-131-1/+4
| | | | | | | | | pendable data since that gets added automatically by the IPendings utility. After the user is subscribed, clean up the saved workflows and reset the token to None. Give the SubscriptionWorkflow a name property for convenience.
* SubscriptionPolicy is largely done, modulo bugs, and the unknown-unknown ofBarry Warsaw2015-04-131-21/+44
| | | | | | | | | | | | | course. This commit contains test failures because the next step is to hook everything up. Changes here include: * confirm.txt removes the URL since we can't know that. * Changes to the ConfirmationNeededEvent * Create the Pendable early in the workflow. * Clean up test. * Update IRegistrar docstring.
* Subscription workflows now support bans.Barry Warsaw2015-04-131-1/+6
|
* Subsume hold_subscription() functionality into the subscription workflow.Barry Warsaw2015-04-131-8/+48
| | | | | Specifically, log a message and send a notification to the list owners when a subscription is held and the list is so configured.
* Handle save/restore of the subscription workflow.Barry Warsaw2015-04-131-4/+68
| | | | | | | | | | To handle the case of restoring a saved workflow, allow the subscriber to be None in the constructor, but assert that it is not None after the first workflow step. Add setters/getters for handling save/restore. In the base workflow interface, rename key to token.
* Subscription workflow checkpointing.Barry Warsaw2015-04-091-57/+62
| | | | | | | | | | * TO DO: - hook up sending of confirmation - processing confirmations and continuing workflow - get tokens for saving workflows - integrate with RequestRecord - integrate with hold_subscription - after getting moderator approval, continue workflow
* Check pointingBarry Warsaw2015-04-061-3/+3
|
* * Refactor test_workflow into a separate module.Barry Warsaw2015-03-291-12/+16
| | | | | | | | | * save_state() -> save() * restore_state() -> restore() * Add push() as the public API for pushing new state on the deque. * Uppercase class attributes. * Add logging on exception. * Minor style fixes.
* Fix merge turd.Barry Warsaw2015-03-291-0/+3
|
* Refactorings and tests.Barry Warsaw2015-03-291-70/+6
| | | | | | | | * Move the basic Workflow class to a module in mailman.app. * Rename the interface and model modules. * Update the configure.zcml. * Minor style fixes. * Add a test for the workflow model.
* Test when confirmations are requiredAurélien Bompard2015-03-271-1/+1
|
* Write and move tests for the bare Workflow classAurélien Bompard2015-03-271-5/+4
|
* Start implmenting the send_confirmation stepAurélien Bompard2015-03-271-0/+7
|
* Workflow: allow saving and restoring with an empty queueAurélien Bompard2015-03-271-4/+15
|
* Factor generic workflow operations in their own classAurélien Bompard2015-03-261-23/+37
|
* Save and restore attributesAurélien Bompard2015-03-261-6/+16
|
* Save the workflow state in the databaseAurélien Bompard2015-03-251-0/+16
|
* Store method names in the SubscriptionWorkflow to allow state savingAurélien Bompard2015-03-251-16/+15
|
* SubscriptionWorkflow: add a test for moderated listsAurélien Bompard2015-03-251-5/+1
|
* Typo in the previous commitAurélien Bompard2015-03-201-2/+0
|
* Resurrect Barry's subpolicy branch (lp:~barry/mailman/subpolicy)Aurélien Bompard2015-03-201-13/+127
|
* Bump copyright years.Barry Warsaw2015-01-041-1/+1
|
* Remove huge amounts of now unnecessary file boilerplate.Barry Warsaw2014-12-221-7/+2
|
* Port some of the commands.Barry Warsaw2014-12-131-1/+3
|
* CheckpointingBarry Warsaw2014-12-121-1/+1
|
* Clean up pass.Barry Warsaw2014-09-221-4/+3
|
* * fix the circular dependecy problem between User and AdressAbhilash Raj2014-09-191-1/+1
| | | | * fix almost all the errors relating to doctests
* fix all tests in mailman.model.testsAbhilash Raj2014-09-131-6/+5
|
* * change declarative_base class to use ModelMeta classAbhilash Raj2014-09-061-1/+1
| | | | * update some queries to match SA style
* Remove a few redundant checks.Barry Warsaw2014-04-151-5/+0
|
* 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
|
* * The link between members and the mailing lists they are subscribed to, isBarry Warsaw2012-09-041-29/+24
| | | | | | | | | | | | | | | 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)
* Replace flufl.password with passlib, albeit with a wrapper.Barry Warsaw2012-06-271-1/+1
|
* General code cleanup.Barry Warsaw2012-04-251-3/+2
| | | | | | | | - Add explicit dependency on zope.event in setup.py. - Use Python 3 compatible syntax for specifying that a class implements an interface, i.e. the @implementer class decorator. - print_function futures. - Whitespace normalization.
* - Module modernatizations (print function).Barry Warsaw2012-04-221-5/+9
| | | | - Convert direct use of config.db global to use the @dbconnection decorator.
* Schema change. After discussion at Pycon, we decided to change "real_name" toBarry Warsaw2012-03-151-4/+4
| | | | | | | | | | | "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)
* A faster implementation of SubscriptionService.get_members().Barry Warsaw2012-01-261-13/+18
|
* * Add property `IUserManager.members` to return all `IMembers` in the system.Barry Warsaw2012-01-261-1/+1
|
* copybumpBarry Warsaw2012-01-011-1/+1
|
* Replace the password stuff with flufl.password.Barry Warsaw2012-01-011-2/+2
|
* * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-301-23/+24
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-10/+7
|/
* Fix some typos, and improve the code.Barry Warsaw2011-08-171-1/+1
|
* Basic infrastructure for fixing bug 827036.Barry Warsaw2011-08-171-33/+48
| | | | | | | | | * 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/+179
member records. Arguments are `subscriber` (email address to search for - required), `fqdn_listname` (optional), and `role` (i.e. MemberRole - optional). (LP: #799612)