summaryrefslogtreecommitdiff
path: root/src/mailman/model/usermanager.py
Commit message (Collapse)AuthorAgeFilesLines
* Bump copyright years.Barry Warsaw2017-01-041-1/+1
|
* Use `atpublic` for @public instead of internal copy.Barry Warsaw2016-11-291-1/+1
|
* Make sure users are returned in a predictable orderAurélien Bompard2016-03-311-1/+1
|
* Clean up the model and languages directories.Barry Warsaw2016-03-251-7/+3
|
* Several optimizations:Barry Warsaw2016-01-111-8/+4
| | | | | | | | | | | | * 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.
* Happy New Year.Barry Warsaw2016-01-021-1/+1
|
* When deleting an Address, dependencies must be deleted firstAurélien Bompard2015-11-211-0/+19
| | | | | SQLite doesn't not enforce foreign key constraints, but PostgreSQL does, and without this fix, IntegrityErrors get raised.
* Add server_owners attribute to the user manager.Barry Warsaw2015-09-231-1/+8
|
* Subscription workflow checkpointing.Barry Warsaw2015-04-091-1/+0
| | | | | | | | | | * 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
* * Refactor add_member() so that it uses a RequestRecord namedtuple.Barry Warsaw2015-03-211-0/+21
| | | | | | * 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`.
* * When deleting a user object, make sure their preferences are also deleted.Barry Warsaw2015-03-201-0/+1
| | | | Given by Abhishek. (LP: #1418276)
* * When creating a user with an email address, do not create the user recordBarry Warsaw2015-02-051-1/+2
| | | | | if the email address already exists. Given by Andrew Stuart. (LP: #1418280)
* Bump copyright years.Barry Warsaw2015-01-041-1/+1
|
* Remove huge amounts of now unnecessary file boilerplate.Barry Warsaw2014-12-221-5/+1
|
* call roster methods on mailinglist object after load from databaseAbhilash Raj2014-09-181-2/+2
|
* change leftover queriesAbhilash Raj2014-09-131-1/+1
|
* modify all storm queries to work with SAAbhilash Raj2014-09-121-7/+7
|
* Bump copyright years.Barry Warsaw2014-01-011-1/+1
|
* Bump copyright years.Barry Warsaw2013-01-011-1/+1
|
* General code cleanup.Barry Warsaw2012-04-251-2/+3
| | | | | | | | - 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.
* - Module modernatizations (print function).Barry Warsaw2012-04-221-21/+30
| | | | - Convert direct use of config.db global to use the @dbconnection decorator.
* Schema change. After discussion at Pycon, we decided to change "real_name" toBarry Warsaw2012-03-151-7/+7
| | | | | | | | | | | "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)
* * Add property `IUserManager.members` to return all `IMembers` in the system.Barry Warsaw2012-01-261-0/+7
|
* copybumpBarry Warsaw2012-01-011-1/+1
|
* * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-301-0/+9
| | | | | | | | | | | | | | | | | | 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.
* * Re-organize the interface between buildout.cfg and the zope.testing layerBarry Warsaw2011-04-011-14/+1
| | | | | | | | | | | | | | | | | | | 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.
* * Give users a unique, random, immutable user id.Barry Warsaw2011-03-181-8/+18
| | | | | * Find users by user_id via the user manager. * Extend the repr of users to include the user id.
* Happy New Year.Barry Warsaw2011-01-011-1/+1
|
* Because it was just to damn confusing, rename IAddress.address toBarry Warsaw2011-01-011-19/+18
| | | | | | 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.
* Happy New Year.Barry Warsaw2010-01-011-1/+1
|
* database/model reorganization. Model classes go in mailman.model. StockBarry Warsaw2009-10-101-0/+104
database support goes in mailman.database. Move stuff out of mailman/database/__init__.py.