| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
commit 3c6500c2292869f94667520f16c8d6c6f1d2c530
Author: Barry Warsaw <barry@python.org>
Date: Tue Aug 29 22:51:18 2017 -0400
Close #383
Messages with badly encoded ``Subject`` headers no longer crash the message
moderation REST API.
commit f6040ec139bcccd48cfa9acc734cd528a8ede35c
Author: Aurélien Bompard <aurelien@bompard.org>
Date: Thu Jul 27 00:52:05 2017 +0200
Fix #383: email encoding errors can crash the REST API
|
| |
|
|
| |
Closes #42
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
If a message can't be parsed by Python due to bad structure, don't raise an
error but return a generic 'this message is defective' string instead.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This merges the SubscriptionManager and UnsubscriptionManager into a
single SubscriptionManager implementation that handles both register()
and unregister(). This allows us to use direct class-based adaptation
instead of the more clunky getAdapter() API. We can also eliminate the
funky _get_workflow() implementation detail.
This has a couple of side-effects. .confirm() must lookup the token in
the pendings database and pull out the pending type, dispatching to the
proper class depending on the type, or raising a LookupError if the
token is None or there is no pendable associated with the given token.
This feels like an acceptable trade-off.
However, this *also* means that IWorkflowStateManager must lose its
'name' argument in its methods. That's because we won't actually know
the name until its too late. Honestly, the name wasn't providing much
value anyway (it was always the subclass's name), so losing that seems
fine too. The complication here is that the name was a primary key in
the 'workflowstate' table, so we need to add its removal in the database
migration.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
When approving a subscription request via the REST API, for a user who is
already a member, return an HTTP 409 Conflict code instead of the previous
server traceback (and resulting HTTP 500 code).
Closes #193
|
| |
|
|
| |
Closes: #161
|
| |
|
|
|
| |
This refactors the setting of a user's preferred address to the first in
their list of linked addresses.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Add some assertions to prove this is always the case.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
* 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`.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
By using `six` I think I have most of the imports squared away. There's
probably still uses of `unicode` built-ins that need fixing.
The idea is to first get the test suite running (which it doesn't yet), and
then to fix tests.
There's a bug in lazr.config which requires us to patch it for now.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
The code base is now also `python2.7 -3` clean, although there are still
some warnings in 3rd party dependencies. LP: #1073506
|
| |
|
|
| |
- Fix up one more use of config.db global.
|
|
|
resources now accept a `held` path component. GETing this returns all held
messages for the mailing list. POSTing to a specific request id under this
url can dispose of the message using `Action` enums.
* `IRequests` interface is removed. Now just use adaptation from
`IListRequests` directly (which takes an `IMailingList` object).
* `handle_message()` now allows for `Action.hold` which is synonymous with
`Action.defer` (since the message is already being held).
* `IListRequests.get_request()` now takes an optional `request_type`
argument to narrow the search for the given request.
- also, print_function is now a standard __future__ import. The template has
been updated, but add this to modules as you edit them.
|