summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * Remove mailinglist.send_reminders column too.Barry Warsaw2012-12-306-11/+12
| |
| * * The column `mailinglist.new_member_options` was unused, and has beenBarry Warsaw2012-12-307-5/+231
| | | | | | | | removed.
| * Remove some leftovers.Barry Warsaw2012-12-291-3/+0
| |
| * Revert the addition of the mailinglist.style_name column, as well as theBarry Warsaw2012-12-298-36/+18
| | | | | | | | | | | | | | | | | | | | | | | | IMailingList.style_name attribute. The problem is, there's nothing to guarantee that only one style will get run, and there's no sense in keeping track of the last style applied. Also: * Remove ListManager.create()'s setting of .personalize and .display_name. These should be left to the styles. (There's no reason why only these two would be set here.) * Fix some typos.
| * LP: #975692 phase 1Barry Warsaw2012-12-2823-366/+294
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Rework list style management. No more style priorities or matching.. Now, you name a style explicitly to apply and that's it. * create_list() now takes a `style` argument. * config file now names both a default style to use, and a set of paths to scan for IStyle instances. (This could be a model for other plugins.) * added IMailingList.style_name to record the last style applied, but this is going to be removed in subsequent revisions. Also: * Move find_components() and scan_module() from app/finder.py to utilities/modules.py * Cleaned up lifecycle.rst for better documentation. Some tests moved to test_lifecycle.py. * Remove some unnecessary test tearDown() code.
| * trunk mergeBarry Warsaw2012-12-260-0/+0
| |\ | |/ |/|
* | * A user's password can be verified by POSTing to .../user/<id>/login. TheBarry Warsaw2012-12-266-149/+384
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | data must contain a single parameter `cleartext_password` and if this matches, a 204 (No Content) will be returned, otherwise a 403 (Forbidden) is returned. (LP: #1065447) Also: * Clean up the users.rst REST page so that it reads as better documentation. Move some tests into the unittests. * Fix (with a new test), the handling of ExistingAddressError when creating new users via REST. * Fix (with a new test), the crashing when .../users/<id>/addresses is referenced on a non-existing user. * Add hex_md5 as a deprecated passlib hash scheme for the test suite. This allows us to test hash migration by creating an initial has as hex_md5 (another crappy hash), and watching verified passwords get migrated to roundup_plaintext (and even crappier hash ;).
| * Remove commented out pdb call.Barry Warsaw2012-12-261-1/+0
| |
| * * A user's password can be verified by POSTing to .../user/<id>/login. TheBarry Warsaw2012-12-266-3/+164
| | | | | | | | | | | | data must contain a single parameter `cleartext_password` and if this matches, a 204 (No Content) will be returned, otherwise a 403 (Forbidden) is returned. (LP: #1065447)
| * * Finish rewrite of users.rst doctest.Barry Warsaw2012-12-263-134/+210
| | | | | | | | | | | | | | * Migrate non-doctests to the test_users.py unittest. * Add more corner cases to the unittest. * Be sure to return a 404 when trying to get the address records of a non-existant user.
| * initial refactoringBarry Warsaw2012-12-251-13/+12
|/
* mergeBarry Warsaw2012-12-257-12/+80
|\
| * * Improve the --help text for the `start`, `stop`, `restart`, and `reopen`Barry Warsaw2012-12-233-4/+8
| | | | | | | | subcommands. (LP: #1035033)
| * * Two new events are triggered on membership changes: `SubscriptionEvent`Barry Warsaw2012-12-235-8/+72
| |\ | | | | | | | | | | | | when a new member joins a mailing list, and an `UnsubscriptionEvent` when a member leaves a mailing list. (LP: #1047286)
| | * * Two new events are triggered on membership changes: `SubscriptionEvent`Barry Warsaw2012-12-235-8/+72
| |/ | | | | | | | | when a new member joins a mailing list, and an `UnsubscriptionEvent` when a member leaves a mailing list. (LP: #1047286)
* / Fix the order of PasswordContext.verify() to match that of passlib.Barry Warsaw2012-12-252-5/+24
|/
* More NEWS.Barry Warsaw2012-12-171-0/+13
|
* Flesh out a few more tests.Barry Warsaw2012-12-171-2/+34
|
* * Expose a REST API for membership change (subscriptions and unsubscriptions)Barry Warsaw2012-12-1713-900/+1090
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | moderation. (LP: #1090753) * Fixed `send_goodbye_message()`. (LP: #1091321) Also: * Rewrite and refactor request.rst into better documentation, moving non-good-path tests into unittests. This doctest now only describes the IRequests API, while the bulk of the moderation documentation now lives in moderator.rst. * When a subscription request is pended, the `delivery_mode` key is now just the enum item's name, instead of the str() of the enum (which would include the class name). We know it's always going to be a DeliveryMode enum. * Refactor out the welcome_message calculation from the welcome_message_uri, since the same algorithm can apply to goodbye_message_uri. * When a _Request is retrieved, include the RequestType enum name in the data dictionary (if there is one) under the `_request_type` key. Some APIs find this useful, but it's not directly returned otherwise. * For held messages via the REST API, flatten the `data` key into the top-level JSON representation, exposing some of the _mod_* keys under their non-_mod_* equivalent. Ignore _mod_* keys we don't care about. This is an API change.
| * * Fill out the documentation on moderation notifications.Barry Warsaw2012-12-173-106/+195
| | | | | | | | * Fix LP: 1091321; typo in send_goodbye_message().
| * Fix cross-references.Barry Warsaw2012-12-172-3/+3
| |
| * * Simplify moderator.rst and requests.rst so they serve a better purpose asBarry Warsaw2012-12-177-824/+603
| | | | | | | | | | | | | | | | | | | | documentation. Move non-documentation tests into a separate unittest file. * Separate out the doctests for IRequest from the doctests for app/moderator.py and place the latter in a separate file. * Fix typo in app/membership.py (s/send_goodbye_msg/send_goodbye_message), but LP: #1091321 tracks more needed fixes in this area.
| * Undo temporary buildout.cfg change due to LP: #1090762Barry Warsaw2012-12-161-1/+1
| |
| * fixesBarry Warsaw2012-12-161-1/+1
| |
| * Complete the exposure of subscription request moderation via REST (still needsBarry Warsaw2012-12-163-75/+253
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a clean up pass and thorough unit testing). * Insert the RequestType enum name into the data dictionary returned by get_request(). Otherwise, there's really no good way to get that information, which several APIs need. * Flatten the data dictionary returned by held message JSON representations, into the JSON dictionary itself. Do a filtering and rename pass on the keys. - rename 'id' to 'request_id' - remove the redundant 'key' * Refactor some common stuff into _ModerationBase, although more refactoring is coming.
| * Expose held subscription/unsubscription requests via the API.Barry Warsaw2012-12-155-12/+156
| | | | | | | | | | | | * hold_subscription(): Don't str(mode) to get a string representation, just mode.name since we know it is a DeliveryMode. This means we don't need to split the value later in handle_subscription().
* | * Allow the getting/setting of IMailingList.subject_prefix via the REST APIBarry Warsaw2012-12-173-0/+11
|\ \ | | | | | | | | | (given by Terri Oda). (LP: #1062893)
| * | Adding subject_prefix to the api (and updating the docs to include it)Terri Oda2012-12-152-0/+9
|/ /
* / Update to the latest version.Barry Warsaw2012-12-151-32/+115
|/
* * Deleting a user through the REST API also deletes all the user's linkedBarry Warsaw2012-11-055-3/+103
| | | | | | addresses and memberships. (LP: #1074374) Also: Clean up pyflakes warning by removing an obsolete __all__ entry.
* Merge Aurélien Bompard's branch to factor our archiver-specific configurationsBarry Warsaw2012-11-0429-106/+297
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into their own configuration files. Reworked by Barry to use the new external configuration file support, and to make test suite succeed. Configuration ------------- * `[passlib]path` configuration variable renamed to `[passlib]configuration`. * Postfix-specific configurations in the `[mta]` section are moved to a separate file, named by the `[mta]configuration` variable. * In the new `postfix.cfg` file, `postfix_map_cmd` is renamed to `postmap_command`. Also: * More Python 2.7-isms, use assertMultiLineEqual() directly. * Added external_configuration() and load_external() to mailman.config.config * ConfigLayer does a blanket set of [postfix]postmap_command so subtests generally won't have to.
| * Merge Aurélien Bompard's branch to factor our archiver-specific configurationsBarry Warsaw2012-11-049-37/+104
| |\ | | | | | | | | | | | | into their own configuration files. Reworked by Barry to use the new external configuration file support, and to make test suite succeed.
| | * Allow archivers to use their own configuration fileAurélien Bompard2012-09-176-31/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a new "configure" entry in the archiver's section, which can point to an ini-compatible configuration file (ConfigParser is used) for additional archiver-specific configuration. The existing archiver config have been split off schema.cfg to their own configuration files. These shipped files can be overridden by a conf file of the same name in $ext_dir. The ini-file loading method should be rather generic, in case we want the same feature somewhere else.
| * | ConfigurationBarry Warsaw2012-11-0422-69/+193
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | ------------- * `[passlib]path` configuration variable renamed to `[passlib]configuration`. * Postfix-specific configurations in the `[mta]` section are moved to a separate file, named by the `[mta]configuration` variable. * In the new `postfix.cfg` file, `postfix_map_cmd` is renamed to `postmap_command`. Also: * More Python 2.7-isms, use assertMultiLineEqual() directly. * Added external_configuration() and load_external() to mailman.config.config * ConfigLayer does a blanket set of [postfix]postmap_command so subtests generally won't have to.
* | A couple of minor code cleanups.Barry Warsaw2012-10-311-3/+2
| |
* | Better NEWS entryBarry Warsaw2012-10-311-1/+2
|\ \
| * | Better NEWS entryBarry Warsaw2012-10-311-1/+2
| | |
* | | merge trunkBarry Warsaw2012-10-312-3/+9
|\ \ \
| * | | * `bin/mailman start` was passing the wrong relative path to its runnerBarry Warsaw2012-10-242-3/+9
| | | | | | | | | | | | | | | | subprocesses when -C was given. LP: #982551
* | | | * Python 2.7 is not required. Python 2.6 is no longer officially supported.Barry Warsaw2012-10-3133-383/+158
|\ \ \ \ | |/ / / |/| / / | |/ / | | | The code base is now also `python2.7 -3` clean, although there are still some warnings in 3rd party dependencies. LP: #1073506
| * / * Python 2.7 is not required. Python 2.6 is no longer officially supported.Barry Warsaw2012-10-3133-383/+158
|/ / | | | | | | | | The code base is now also `python2.7 -3` clean, although there are still some warnings in 3rd party dependencies. LP: #1073506
* | DatabaseBarry Warsaw2012-10-1613-210/+389
| | | | | | | | | | | | | | | | | | | | | | | | -------- * The `ban` table now uses list-ids to cross-reference the mailing list, since these cannot change even if the mailing list is moved or renamed. Interfaces ---------- * The `IBanManager` is no longer a global utility. Instead, you adapt an `IMailingList` to an `IBanManager` to manage the bans for a specific mailing list. To manage the global bans, adapt ``None``.
* | * Added support for Postfix `relay_domains` setting for better virtual domainBarry Warsaw2012-10-127-212/+223
|\ \ | | | | | | | | | | | | | | | | | | | | | support. Contributed by Jimmy Bergman. * `bin/mailman aliases` loses the `--output`, `--format`, and `--simple` arguments, and adds a `--directory` argument. This is necessary to support the Postfix `relay_domains` support.
| * | * Added support for Postfix `relay_domains` setting for better virtual domainBarry Warsaw2012-10-127-212/+223
|/| | | | | | | | | | | | | | | | | | | | | | | support. Contributed by Jimmy Bergman. * `bin/mailman aliases` loses the `--output`, `--format`, and `--simple` arguments, and adds a `--directory` argument. This is necessary to support the Postfix `relay_domains` support.
| * | Add another paragraph to MTA.rst regarding virtual domainsJimmy Bergman2012-09-241-0/+5
| | |
| * | Write a domain map that postfix can use as relay_domains automatically on ↵Jimmy Bergman2012-09-242-4/+73
| | | | | | | | | | | | | | | | | | list creation/removal. Improve postfix documentation in MTA.rst by referencing the official docs.
| * | Merge with trunkJimmy Bergman2012-09-2417-194/+551
| |\ \ | |/ / |/| |
* | | * You can now verify and unverify an email address through the REST API.Barry Warsaw2012-09-224-3/+159
| | | | | | | | | | | | | | | | | | | | | POST to .../addresses/<email>/verify and .../addresses/<email>/unverify respectively. The POST data is ignored. It is not an error to verify or unverify an address more than once, but verifying an already verified address does not change its `.verified_on` date. (LP: #1054730)
* | | * You can now PUT and PATCH on user resources to change the user's displayBarry Warsaw2012-09-229-110/+320
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | name or password. For passwords, you pass in the clear text password and Mailman will hash it before storing. Also: * Major refactoring of validators for PUT and PATCH. Pull the common logic out of configuration.py and put it in a PatchValidator class in helpers.py. Also move GetterSetter to helpers.py * Add new exception classes RESTError, UnknownPATCHRequestError, ReadOnlyPATCHRequestError. These are used in the PatchValidator. * Added Validator.update() which works nicely for PATCH and PUT.
* | | * Add list_id to JSON representation for a mailing list (given by JimmyBarry Warsaw2012-09-224-17/+69
|\| | | |/ |/| | | | | | | | | | | Bergman). * The canonical resource for a mailing list (and thus its self_link) is now the URL with the list-id. To reference a mailing list, the list-id url is preferred, but for backward compatibility, the posting address is still accepted.