summaryrefslogtreecommitdiff
path: root/src/mailman/interfaces/user.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
|
* Clean up the User.absorb() method and tests.Barry Warsaw2016-05-141-2/+17
|
* Implement suggestions from the reviewAurélien Bompard2016-05-041-2/+0
|
* Add a method to merge a user into another userAurélien Bompard2016-05-041-0/+8
|
* Import order flake8 plugin.Barry Warsaw2016-03-271-1/+1
| | | | Fix lots of import order errors discovered by the new plugin.
* Clean up the interfaces directory.Barry Warsaw2016-03-251-12/+6
|
* Happy New Year.Barry Warsaw2016-01-021-1/+1
|
* Document an attribute.Barry Warsaw2015-09-231-0/+3
| | | | Add a doctest for the `owners` top-level resource.
* Bump copyright years.Barry Warsaw2015-01-041-1/+1
|
* Remove huge amounts of now unnecessary file boilerplate.Barry Warsaw2014-12-221-5/+1
|
* Bump copyright years.Barry Warsaw2014-01-011-1/+1
|
* Bump copyright years.Barry Warsaw2013-01-011-1/+1
|
* * A `PasswordChangeEvent` is triggered when an `IUser`'s password changes.Barry Warsaw2012-04-071-0/+13
| | | | (LP: #975700)
* Several fixes and cleanups, ostensibly to fix Python 2.6 support.Barry Warsaw2012-03-221-10/+3
| | | | | | | | | | | | | | | | | | | | | | | | | - email.iterators.body_line_iterator() cannot handle unicodes in Python 2.6, because it uses cStringIO.StringIO under the covers, and *that* can't handle unicode. This works fine in Python 2.7, so I override this for the tests only under 2.6 (the code itself isn't affected). - AddressError needs to str() its IAddress attribute explicitly in the __str__() method, otherwise under Python 2.6, you'll get unprintable reprs in the doctests. Again, this works correctly in 2.7, but EIBTI, so it can't hurt either way. - EmailError: a new exception, not related to AddressError. The reason for this it to conform to current nomenclature: "address" means an IAddress while "email" means a text email address. So InvalidEmailAddressError now derives from EmailError instead of AddressError because it gets passed a text email address, and because that is invalid, it never gets turned into an IAddress. The __str__() of this new base exception class does some tricky encoding to keep it compatible between Python 2.6 and 2.7. - UnverifiedAddressError derives from AddressError instead of the more generic MailmanError. - A few random code cleanups are included.
* 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)
* copybumpBarry Warsaw2012-01-011-1/+1
|
* * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-301-1/+1
| | | | | | | | | | | | | | | | | | 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.
* Give IMembers a unique member id. We have to do this in order to give them aBarry Warsaw2011-04-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | path at the root of the resource tree (i.e. /members/X) and because when members can be subscribed by their IUser record (for preferred address), their canonical location cannot contain the address they are subscribed with. When their preferred address changes (without otherwise touching their membership), this address will change and that's not good for a canonical location. Other changes: * Added IMember.member_id attribute * Added ISubscriptionService.get_member() so member records can be retrieve by member id. * We can now get individual members by id via the REST API. * Extend the UniqueIDFactory so that it can take a 'context' (defaulting to None). The context is only used in the testing infrastructure so that separate files can be used for user ids and member ids. Otherwise, we'd have gaps in those sequences. * When *not* in testing mode, ensure that UIDs cannot be reused by keeping a table of all UIDs ever handed out. We *should* never get collisions, but this ensures it. * Clean up mailman.sql
* Users now have a preferred address which can be set, changed, and deleted.Barry Warsaw2011-04-161-0/+18
| | | | The preferred address must be verified, and controllable by the user.
* * Re-organize the interface between buildout.cfg and the zope.testing layerBarry Warsaw2011-04-011-0/+3
| | | | | | | | | | | | | | | | | | | 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-0/+3
| | | | | * 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-15/+19
| | | | | | 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
|
* * Add REST interface for joining a mailing list.Barry Warsaw2009-12-281-1/+1
| | | | | | * add_member() now returns the newly created IMember. * Reorganized several exceptions and exposed them to the REST API. * Added NoSuchListError.
* Push the source directory into a 'src' subdirectory so that zc.buildout worksBarry Warsaw2009-01-251-0/+84
correctly regardless of how it's used.