| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
We now have an IAPI interface which defines methods to convert to/from
UUIDs to their REST representations, and to calculate the API-homed full
URL path to a resource. Add implementations API30 and API31 to handle
the two different implementations so far. This also simplifies the
various path_to() calls.
Also: Add support for diff_cover to tox.ini to check that all
differences against the master branch have full test coverage.
|
| |
|
|
|
|
| |
Rather than sprinkle API version string tests all over the place, create
an IAPI interface which encapsulates the differences between API 3.0 and
3.1, and arrange for this to be used to convert to and from UUIDs.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Use `yield from` wherever appropriate.
* Use SA's .one_or_none() where appropriate.
- Fix a bug in MailingList.pass_extensions.
- Use ValueError in other places for consistency.
- Remove unreached/nonsense code.
- Simplify the SubscriptionService.find_member() and .find_members()
implementations.
- Boost coverage.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Increase coverage.
Add ISubscriptionService.find_member() as per discussion.
|
| | |
|
| | |
|
| |
|
|
| |
the mailman.model package.
|
| |
|
|
|
|
| |
use len() and slicing on SQLAlchemy query results. We also don't need to
list()-ify the results in the tests. This isn't perfect, but at least it
doesn't introduce yet another layer violation.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Use coverage.ini to ignore a few common idioms, so as to reduce code clutter.
Invoke coverage slightly differently in the tox.ini.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
hex representations of a UUID, not the int representation.
Also:
* Some general code cleanup.
* Fix issue 185 (REST server crash when subscribing a user without a
preferred address).
|
| | |
|
| |
|
|
|
|
|
|
| |
* Boost coverage.
* Don't report coverage on the test modules.
* In one test, when acquiring the lock, set a timeout. Hopefully this will
eliminate the occasional test deadlock.
* Fix a buglet in wrap()
|
| |
|
|
|
| |
Use Python 3.5 to run the coverage tests.
Clean up the code style a bit.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This commits builds upon the mailman.utilities.uid.UniqueIDFactory to
generate predictable tokens when the testing mode is activated. This
will make VCR tapes more diffable between runs.
|
| |
|
|
|
| |
subscription roles. Also, the positional "list" argument can now accept
list names or list-ids.
|
| | |
|
| |
|
|
|
|
|
| |
via the ``<api>/lists/<list-id>/digest`` end-point. GETting this resource
returns the ``next_digest_number`` and ``volume`` as the same values
accessible through the list's configuraiton resource. POSTing to the resource
with either ``send=True``, ``bump=True``, or both invokes the given action.
|
| |
|
|
|
| |
Fix a buglet where if maybe_send_digest_now() was called before a digest has
been prepared, a FileNotFoundError would be raised.
|
| |
|
|
|
|
|
|
|
| |
their own module inside the mailman.app package. With the latter, remove the
"all lists" functionality and require the mlist argument. We'll handle the
"all lists" use case higher up the stack.
Also, rename the send-digests handler digests since we'll next add the bump
functionality.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add a `mailman send-digests` subcommand which replaces the functionality of
the MM2.1 senddigests.py cronjob.
* Use mlist.data_path where appropriate instead of crafting it from
config.LIST_DATA_DIR. This makes it more consistent to switch to using the
list-id as the data subdirectory.
* Refactor the to_digest handler so that we can implement
maybe_send_digest_now() for the internal API.
* Fix some typos in subcommand --help summaries.
|
| | |
|
| |
|
|
|
|
|
| |
* digestable -> digests_enabled
* nondigestable: removed
* Exposed digests_enabled, digest_send_periodic, digest_volume_frequency in
REST.
|
| | |
|
| | |
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| | |
I.e. when the URL is good, but the request dictionary contains a bogus
attribute, you should get a 400 error, not a 404.
Also, fix some comments.
|
| |/
|
|
|
|
|
| |
I.e. when the URL is good, but the request dictionary contains a bogus
attribute, you should get a 400 error, not a 404.
Also, fix some comments.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Closes #182
* Improve the documentation, especially in describing how to PUT and
PATCH to list configuration subresources.
* Improve the return codes for many error corner cases. Specifically,
this makes more consistent when a 400 error is returned or a 404 error
is returned.
* Improve the handling of some weird corner cases, and add tests.
* Fix the setting of error response reasons by not trying to .format()
into a bytes object (which isn't allowed in Python 3).
* Add lots of comments to the code, which improves the readability of
all the twisty little turns.
* 100% code coverage for listconf.py!
|
| | |
|
| | |
|
| |\
| |
| |
| | |
Closes !68
|
| | | |
|
| | | |
|