| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| |
|
|
| |
See !161
|
| |
|
|
|
|
| |
This allows the filtering to be done at the database level. It also
makes list pagination much more efficient, since the slicing is done at
the database level too.
|
| |
|
|
| |
Fix lots of import order errors discovered by the new plugin.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
--------
* The ORM layer, previously implemented with Storm, has been replaced by
SQLAlchemy, thanks to the fantastic work by Abhilash Raj and Aurélien
Bompard. Alembic is now used for all database schema migrations.
* The new logger `mailman.database` logs any errors at the database layer.
API
---
* Several changes to the internal API:
- `IListManager.mailing_lists` is guaranteed to be sorted in List-ID order.
- `IDomains.mailing_lists` is guaranteed to be sorted in List-ID order.
- Iteration over domains via the `IDomainManager` is guaranteed to be sorted
by `IDomain.mail_host` order.
- `ITemporaryDatabase` interface and all implementations are removed.
|
| |/ |
|
| |
|
|
|
|
|
|
| |
reflect this.
Also, mock out sys.stderr on some tests so that their nose2 output is quieter.
A few other minor coding style consistencies.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
now via the RFC 2369 `list_id` instead of the fqdn listname (i.e. posting
address). This is because while the posting address can change if the
mailing list is moved to a new server, the list id is fixed.
(LP: #1024509)
+ IListManager.get_by_list_id() added.
+ IListManager.list_ids added.
+ IMailingList.list_id added.
+ Several internal APIs that accepted fqdn list names now require list ids,
e.g. ISubscriptionService.join() and .find_members().
+ IMember.list_id attribute added; .mailing_list is now an alias that
retrieves and returns the IMailingList.
- list_id added (LP: #1024509)
|
| | |
|
| |
|
|
| |
every mailing list as (list_name, mail_host).
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
* Add ListCreatingEvent and ListDeletingEvent. These are sent before the
operation actually occurs, whereas the previously added ListCreatedEvent and
ListDeletedEvent are sent after the operation. Specifically, this is
necessary because request database deletion requires the IMailingList
object, which is only available before the list is deleted.
* Add a handler to clear out the requests database for a mailing list, when
the mailing list is about to be deleted.
|
| | |
|
| | |
|
| |
|
|
|
| |
due to _() interpolation) and a few other problems that did not have
immediately obvious fixes.
|
| | |
|
| |
|
|
|
| |
* Put the domain name on the BadDomainSpecificationError
* Give the IListManager an __iter__()
|
| |
|
|
|
| |
REST architecture, at the expense of a few features, and less support. So far
so good though.
|
| | |
|
| |
|
|
|
|
| |
* add_member() now returns the newly created IMember.
* Reorganized several exceptions and exposed them to the REST API.
* Added NoSuchListError.
|
| |
|
|
|
|
| |
the improvement of the publication's handleException() method.
Pick some lint in traverse.py.
|
| |
|
|
|
|
| |
return an HTTP 400 error, though it does not seem to work.
Expose list creation through the API.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add get_mailing_lists() which is used just for the web interface. Because of
a bug in lazr.restful, this cannot be a generator.
Similar change in IDomainSet.
Instrument IListManager to be vended through the api.
The REST server must be run in a separate process since SQLite does not like
objects created in one thread to be used in another thread. Note that this
breaks the domain.txt test, but domains really need to be in the database
anyway.
|
|
|
correctly regardless of how it's used.
|