| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| | |
|
| |
|
|
|
| |
SQLite doesn't not enforce foreign key constraints, but PostgreSQL does,
and without this fix, IntegrityErrors get raised.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
* TO DO:
- hook up sending of confirmation
- processing confirmations and continuing workflow
- get tokens for saving workflows
- integrate with RequestRecord
- integrate with hold_subscription
- after getting moderator approval, continue workflow
|
| |
|
|
|
|
| |
* 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`.
|
| |
|
|
| |
Given by Abhishek. (LP: #1418276)
|
| |
|
|
|
| |
if the email address already exists. Given by Andrew Stuart.
(LP: #1418280)
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
- Add explicit dependency on zope.event in setup.py.
- Use Python 3 compatible syntax for specifying that a class implements an
interface, i.e. the @implementer class decorator.
- print_function futures.
- Whitespace normalization.
|
| |
|
|
| |
- Convert direct use of config.db global to use the @dbconnection decorator.
|
| |
|
|
|
|
|
|
|
|
|
| |
"display_name" across the board.
* `IMailingList.real_name` -> `IMailingList.display_name`
* `IUser.real_name` -> `IUser.display_name`
* `IAddress.real_name` -> `IAddress.display_name`
* Schema changes:
- real_name -> display_name (mailinglist, user, address)
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and exposed to the REST API as their integer equivalents. They are stored
in the database using Storm's UUID type.
- ISubscriptionService.get_member() now takes a UUID
- IUserManager.get_user_by_id() now takes a UUID
* Moderators and owners can be added via REST (LP: #834130). Given by
Stephen A. Goss.
- add_member() grows a `role` parameter.
- ISubscriptionService.join() grows a `role` parameter.
* InvalidEmailAddressError no longer repr()'s its value.
* `address` -> `email` for consistency
- delete_member()
- ISubscriptionService.leave()
* Fixed typo in app/subscriptions.py __all__
* AlreadySubscribedError: attributes are now public.
* More .txt -> .rst renames.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
initialization. buildout.cfg is now really simple; it calls one method.
That method does all the relevant layer initializations. This better
localizes what has to be set up before testing can even begin.
* IUsers now have a created_on property which contains the datetime at which
the user record was created.
* Rework the date and uid factories so that they consult the
MockAndMonkeyLayer for the current testing flag. Also, those factories
register themselves with the layer so that they'll get automatically reset
between tests, without the layer actually having to know about them.
* Move the User model object initialization into User.__init__() from the user
manager. The User now also adds itself to the store.
* Add a 'uid factory' for unique id creation, which is test suite aware.
|
| |
|
|
|
| |
* Find users by user_id via the user manager.
* Extend the repr of users to include the user id.
|
| | |
|
| |
|
|
|
|
| |
IAddress.email and IAddress.original_address to IAddress.original_email. From
now on we'll use "address" to talk about the IAddress object and "email" to
talk about the textual email address.
|
| | |
|
|
|
database support goes in mailman.database. Move stuff out of
mailman/database/__init__.py.
|