| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
| |
correctly in the REST API's list of members. This even correctly tracks
changes in their preferred address.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| |
|
|
|
|
|
| |
* Fix a case in a list's /members API where the listname is bogus.
* Catch NotAMemberError form delete_member() and return not_found.
* Refactor REST helpers so that call_api() can be used in unittests without
doing any prints to stdout.
|
| |
|
|
|
|
|
|
|
|
| |
appropriate.
Also:
* When an Address instance is created, set its registered_on attribute.
* Users may not have a password or real_name, so only include those attributes
in the REST API for Users if they are set.
|
| | |
|
| | |
|
| |
|
|
| |
users are subscribed with their preferred addresses.
|
| |\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
can now subscribe to a mailing list, in which case, their preferred address
will be used for the appropriate roster. Users cannot subscribe to a mailing
list more than once, but they can still subscribe even if their preferred
address is subscribed, and if a user is subscribed, an address they control
can still be explicitly subscribed.
Other changes:
* .subscribe() is moved from the IAddress to the IMailingList
* IUser.address and .user are now properties
* Added IUser.preferred_address which is a get/set/del property
|
| | | |
|
| | |
| |
| |
| | |
get delivery.
|
| | |
| |
| |
| | |
The preferred address must be verified, and controllable by the user.
|
| |/| |
|
| |/ |
|
| | |
|
| |\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
and the REST API. A highlight of the merged changes:
* The REST API now has a /users top-level URL under which user information can
be accessed, and new users can be created.
* IUsers now have a unique `user_id` which is evident in the REST API. Under
testing, these uids are predictable, but otherwise, they're entirely random
but guaranteed to be unique.
* IUsers now have a `created_on` attribute. Like `user_id` these are
predictable under testing, but otherwise reflect the actual date.
* User passwords are now 'encrypted' (hashed) as defined by the config file.
- new mailman.cfg variables password_scheme and password_length
* IMember gets a `user` attribute which is a convenience for getting the IUser
associated with the member.
* mmsitepass is gone:
- creator_pw_file
- site_pw_file
* Improved test initialization and its hook into zc.buildout.
|
| | |\ |
|
| | | |\ |
|
| | | | |\
| |_|_|/
|/| | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
exactly what happened but bzr email notification said "13 revisions were
removed from the branch". I'll open an issue and attach a diff for future
resolution.
|
| |\ \ \ \ |
|
| |\ \ \ \ \ |
|
| | |\ \ \ \ \ |
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | |\| | |
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
both encrypted according to a scheme, and a bytes object.
add_member(): Use encrypt_password().
cli_members: Give the user a default, user-friendly password. Of course, this
will be encrypted so it can't be retrieved, but it can be reset.
Passwords are stored as bytes objects, not unicode now.
ConfigLayer: Set the default test password scheme to cleartext.
General test repair.
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
- As the most common interface for adding new members (and users), adapt the
password storing bit to storing only encrypted passwords in the database.
schema.cfg:
- Remove the creator_pw_file and site_pw_file as they are obsolete.
- Add password_schema key for defining the default password encryption scheme.
mailman.sql, user.py:
- Store the password as a binary blob instead of as unicode text.
|
| | | | | |\| | |
|
| | | | | | |\| |
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
pure convenience by way of an IUserManager lookup.
|
| | | | | |\| | |
|
| | | | | | |/ |
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* Add a 'uid factory' which allows us to return predictable unique ids for
various testing purposes, e.g. user ids. This should work even in the case
of cross-subprocess uid generation.
* REST access to individual users, or the set of all users.
* User objects now have a created_on attribute.
* Users can be created through the web, but must have an email address.
* Add a [devmode] 'testing' variable for communicating to qrunner subprocesses
that we're running in testing mode. This allows us to coordinate factories
and such in the qrunner processes.
* layers.is_testing() for more consistent API.
* Give AddressError a .address attribute for better diagnostics.
|
| | | | | |\| |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
| | | | |/
| | | |
| | | |
| | | | |
* Remove mmsitepass.py - there is no more site password.
|
| | | | |\ |
|
| | | | | | |
|
| | | | | |\
| | | | |/
| | | |/| |
|
| | | | |\|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Utils.maketext() and Utils.findtext() in favor of better implementations in
mailman.utilities.i18n.
We're nearly there!
|