| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
| |
It's less important now that the configuration system is built on
lazr.config. Closes #45
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| |/ |
|
| |
|
|
| |
Fixes #283
|
| |
|
|
| |
where needed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
The new template system is introduced for API 3.1. See
``src/mailman/rest/docs/templates.rst`` for details.
|
| |
|
|
|
|
|
| |
Wraps the message/rfc822 parts in a MIME digest in a multipart/digest
part.
Updated the tests and the doc test.
|
| |
|
|
|
|
| |
Link.__init__() can now take an IRule or the string naming a rule, which
will be looked up in config.rules. Similarly, it can take an IChain or
the name of a chain.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
| |
Fixes: #163
Adapt unit tests.
|
| |
|
|
| |
input. Use this version only for Python 3.4.
|
| |
|
|
|
| |
(Closes #141). Also, don't enqueue a particular digest if there are no
recipients for that digest.
|
| |
|
|
|
|
| |
3.0 except that UUIDs are represented as hex strings instead of 128-bit
integers, since the latter are not compatible with all versions of
JavaScript.
|
| |
|
|
|
|
| |
`X-Message-ID-Hash` although the latter is still included for backward
compatibility. Also be sure that all places which add the header use the
same algorithm.
|
| |
|
|
| |
Fix some tests that incorrectly hardcoded "3.0"
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* Make sure Registrar.discard() removces any workflow state manager state
associated with the token, and that this is flushed to SA.
* Adjust the email commands to the new IRegistrar API.
* Update the IRegistrar interface.
* Add IWorkflowStateManager.discard() and make `count` an attribute/property.
* Mark two tests as expected failures due to LP: #1444184.
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
returns the newly created member.
|
| |/
|
|
|
|
| |
* 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`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
file's ``[paths.*]`` sections. A new ``[paths.here]`` section is added,
which puts the ``var_dir`` in ``$cwd``. It is made the default layout.
* You can now view the contents of, inject messages into, and delete messages
from the various queue directories via the ``<api>/queues`` resource.
Also:
inject_message() and inject_text() now return the filebase of the file
injected into the queue directory.
|
| |
|
|
|
|
|
|
|
| |
``/3.0/system/configuration/<section>``. This returns a dictionary with
the keys being the section's variables and the values being their value
from ``mailman.cfg`` as verbatim strings. You can get a list of all
section names via ``/3.0/system/configuration`` which returns a dictionary
containing the ``http_etag`` and the section names as a sorted list under
the ``sections`` key. The system configuration resource is read-only.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
load_external() now always opens in utf-8 mode.
More test repair.
|
| |
|
|
|
|
|
|
|
|
|
| |
To do this, we have to handle random test ordering, since tox explicitly sets
PYTHONHASHSEED. That's a good thing for the future Python 3 port.
Removed `mailman conf -t/--sort`; now the output is always sorted.
RFC 2369 headers are now sorted before being added.
etag repr dicts are sorted using pprint.pformat().
|
| |
|
|
|
|
|
|
| |
reflect this.
Also, mock out sys.stderr on some tests so that their nose2 output is quieter.
A few other minor coding style consistencies.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* New events:
- ConfirmationNeededEvent is triggered when a pendable requiring
confirmation is created. This allows us to define an event handler for
this event which sends the user notification.
- SubscriptionEvent is triggered when a member is added to a mailing list.
This lets us define an event handler which sends the welcome message.
* send_welcome_message() now takes a member parameter instead of an address,
which lets us directly access the member's delivery mode and user display
name (if the member has a user, which it might not in some cases).
* Use the list id in the pendable record instead of the list name for
robustness (the latter can change but the former is permanent).
* Test more registration conditions.
* In the bin/runner command line switch handling, default `verbose` to None
instead of False. This makes it work better with nose's -E switch (log to
stderr).
* In call_api(), if a POST, PUT, or PATCH method is used and data is None,
encode the empty dictionary; seems like the behavior of urlencode() has
changed, so this is safer.
* Fix style and pyflakes warnings.
|
| | |
|
| |\
| |
| |
| | |
Fixed by Mark Sapiro.
|
| | | |
|
| | | |
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The default hash is `sha512_crypt`.
* Events renamed and moved:
* `mailman.chains.accept.AcceptNotification`
* `mailman.chains.base.ChainNotification`
* `mailman.chains.discard.DiscardNotification`
* `mailman.chains.hold.HoldNotification`
* `mailman.chains.owner.OwnerNotification`
* `mailman.chains.reject.RejectNotification`
changed to (respectively):
* `mailman.interfaces.chains.AcceptEvent`
* `mailman.interfaces.chains.ChainEvent`
* `mailman.interfaces.chains.DiscardEvent`
* `mailman.interfaces.chains.HoldEvent`
* `mailman.interfaces.chains.AcceptOwnerEvent`
* `mailman.interfaces.chains.RejectEvent`
* A `ConfigurationUpdatedEvent` is triggered when the system-wide global
configuration stack is pushed or popped.
* With the switch to `passlib`_, `[passwords]password_scheme` has been
removed. Instead use `[passwords]path` to specify where to find the
`passlib.cfg` file. See the comments in `schema.cfg` for details.
|
| |
|
|
|
| |
- Add a `cleanups` global to doctests. This can be used to register
functions which will get called automatically at doctest tearDown time.
|
| |
|
|
| |
Beta testers can can safely remove `$var_dir/queue/news`.
|