| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
| |
Moving header matches up and down the stack is more transparent that
way.
|
| |
|
|
|
|
|
| |
Add a numerical index property to HeaderMatch objects, and change the
HeaderMatchSet manager to take the order into account.
Items can now be inserted and removed by index.
|
| |
|
|
| |
Closes: #161
|
| |
|
|
|
|
|
| |
When multiple users are subscribed to a mailing list via their preferred
address, too many results are returned from a membership query,
resulting in an assertion error. Reported by Darrell Kresge.
(Closes: #190)
|
| |
|
|
|
| |
This refactors the setting of a user's preferred address to the first in
their list of linked addresses.
|
| |
|
|
| |
Also, ignore `raise AssertionError` lines globally.
|
| |
|
|
|
|
|
|
| |
- Fix an interface description.
- Fix a copyright year.
- Fix quote styles.
- Tweak a test.
- Add a test.
|
| |
|
|
| |
Also add indexes on the Ban fields that are filtered on.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
SQLite doesn't not enforce foreign key constraints, but PostgreSQL does,
and without this fix, IntegrityErrors get raised.
|
| | |
|
| | |
|
| |
|
|
|
| |
(Closes #141). Also, don't enqueue a particular digest if there are no
recipients for that digest.
|
| |
|
|
|
|
|
| |
* Sort the .delete()'s
* Remove an unused import.
* Renamed and documented some tests.
* Support tox's new passenv setting.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
`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.
|
| |\
| |
| |
| |
| |
| | |
It now properly supports email verification and subscription confirmation
by the user, and approval by the moderator using unique tokens.
``IMailingList`` objects now have a ``subscription_policy`` attribute.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|
| | |\ |
|
| | |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
the mailing list (via preferred address/user or explicit address).
IMember.get_member() is defined to return the explicit address when members
are subscribed in both ways.
IMember.get_memberships() returns a sequence of length 0, 1, or 2 containing
all the member records associated with the email address.
Fixed the AbstractMemberRoster methods query to properly return subscriptions
via the user's preferred address and via an explicit address.
|
| | | |
|
| | |
| |
| |
| |
| | |
* The workflow state manager no longer allows updates via .save().
* Restoring a workflow state evicts the record from the database.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |\
| |/
|/| |
|
| | | |
|
| |\ \ |
|
| | | |
| | |
| | |
| | | |
* add and remove owners using the address
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Change `Owner` to `DomainOwner`
* Fix indentation errors in docs
* add multiple owners using `add_owners`
* all dummy addresses should be using example.com, example.org to avoid conflict ever
* add dummy tests
|
| | | | |
|
| | |/
|/|
| |
| |
| |
| |
| |
| | |
* 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.
|
| |\ \
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Backward Incompatible REST API Changes:
* The JSON representation for subscription holds now no longer contains the
`password` key. Also, the `address` key has been renamed to `email` for
consistency with established terminology and other usage.
Other Internal API Changes:
* IUserManager has grown a `make_user()` method.
Refactorings:
* Most uses in the test suite of add_member() have been replaced with a new
version of the subscribe() helper. This reduces the surface area of this
ancient internal API. Eventually add_member() will have to go away or
significantly change with the subscription policy workflow.
* hold_subscription() as well as the remaining instances of add_member() now
use a namedtuple in their arguments, to keep the signatures manageable.
|
| | | |
|
| |/
|
|
| |
list is deleted.
|
| |\
| |
| |
| | |
Given by Abhishek. (LP: #1418276)
|
| |/
|
|
| |
Given by Abhishek. (LP: #1418276)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
allowing a client to cull all orphaned UIDs via ``DELETE`` on
``<api>/reserved/uids/orphans``. Note that *no guarantees* of API
stability will ever be made for resources under ``reserved``.
(LP: #1420083)
Also:
- Allow @dbconnection methods to be @staticmethods taking only one argument,
the store to perform the query on.
|
| |
|
|
|
| |
if the email address already exists. Given by Andrew Stuart.
(LP: #1418280)
|
| | |
|