summaryrefslogtreecommitdiff
path: root/src/mailman/model/docs (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* * Fix test isolation bug in ``languages.rst``.Barry Warsaw2014-04-171-5/+5
|\ | | | | | | [Piotr Kasprzyk] (LP: #1308769)
| * Make a copy before first usage of mgr.clear()Piotr Kasprzyk2014-04-161-4/+4
|/
* Several internal improvements:Barry Warsaw2014-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | * New events: - ConfirmationNeededEvent is triggered when a pendable requiring confirmation is created. This allows us to define an event handler for this event which sends the user notification. - SubscriptionEvent is triggered when a member is added to a mailing list. This lets us define an event handler which sends the welcome message. * send_welcome_message() now takes a member parameter instead of an address, which lets us directly access the member's delivery mode and user display name (if the member has a user, which it might not in some cases). * Use the list id in the pendable record instead of the list name for robustness (the latter can change but the former is permanent). * Test more registration conditions. * In the bin/runner command line switch handling, default `verbose` to None instead of False. This makes it work better with nose's -E switch (log to stderr). * In call_api(), if a POST, PUT, or PATCH method is used and data is None, encode the empty dictionary; seems like the behavior of urlencode() has changed, so this is safer. * Fix style and pyflakes warnings.
* trunk mergeBarry Warsaw2013-09-013-4/+3
|\
| * Switch to PEP 435 enums from flufl.enums.Barry Warsaw2013-06-183-4/+3
| |
* | Migrate bounceevent.list_name -> bounceevent.list_idBarry Warsaw2013-09-011-2/+2
|/ | | | | | | * Rename StormBaseDatabase._create() -> .initialize() * Refactor database initialization. * make_listid() helper. * Add a pivot() helper for schema migrations.
* * Two new events are triggered on membership changes: `SubscriptionEvent`Barry Warsaw2012-12-231-0/+23
| | | | | when a new member joins a mailing list, and an `UnsubscriptionEvent` when a member leaves a mailing list. (LP: #1047286)
* Fix cross-references.Barry Warsaw2012-12-171-1/+1
|
* * Simplify moderator.rst and requests.rst so they serve a better purpose asBarry Warsaw2012-12-171-804/+69
| | | | | | | | | | documentation. Move non-documentation tests into a separate unittest file. * Separate out the doctests for IRequest from the doctests for app/moderator.py and place the latter in a separate file. * Fix typo in app/membership.py (s/send_goodbye_msg/send_goodbye_message), but LP: #1091321 tracks more needed fixes in this area.
* * Python 2.7 is not required. Python 2.6 is no longer officially supported.Barry Warsaw2012-10-311-2/+1
| | | | | The code base is now also `python2.7 -3` clean, although there are still some warnings in 3rd party dependencies. LP: #1073506
* * The link between members and the mailing lists they are subscribed to, isBarry Warsaw2012-09-045-42/+69
| | | | | | | | | | | | | | | 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)
* Replace flufl.password with passlib, albeit with a wrapper.Barry Warsaw2012-06-271-1/+1
|
* General code cleanup.Barry Warsaw2012-04-252-6/+12
| | | | | | | | - 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.
* * A `PasswordChangeEvent` is triggered when an `IUser`'s password changes.Barry Warsaw2012-04-071-0/+19
| | | | (LP: #975700)
* * An `AddressVerificationEvent` is triggered when an `IAddress` is verifiedBarry Warsaw2012-04-071-3/+28
| | | | or unverified. (LP: #975698)
* ArchitectureBarry Warsaw2012-03-262-3/+3
| | | | | | | | | | | | | | | | | | | ------------ * Internally, all datetimes are kept in the UTC timezone, however because of LP: #280708, they are stored in the database in naive format. * `received_time` is now added to the message metadata by the LMTP runner instead of by `Switchboard.enqueue()`. This latter no longer depends on `received_time` in the metadata. * The `ArchiveRunner` no longer acquires a lock before it calls the individual archiver implementations, since not all of them need a lock. If they do, the implementations must acquire said lock themselves. Configuration ------------- * New configuration variables `clobber_date` and `clobber_skew` supported in every `[archiver.<name>]` section. These are used to determine under what circumstances a message destined for a specific archiver should have its `Date:` header clobbered.
* - Move some normal recipient tests to unittests.Barry Warsaw2012-03-231-4/+4
| | | | | | | | - Add unittests for owner recipients. There does eventually need to be some documentation about owner recipients. - Implement owner recipients handler. This includes moderators and owners (i.e. all the non-disabled the list administrators). - Changed the [mailman]site_owner setting in testing.cfg to noreply@example.com
* Schema change. After discussion at Pycon, we decided to change "real_name" toBarry Warsaw2012-03-156-36/+34
| | | | | | | | | | | "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)
* Fix welcome_message_uri to do the placeholder interpolations guaranteed in theBarry Warsaw2012-03-042-1/+5
| | | | | | | | IMailingList documentation. Also: * `ILanguageManager.add()` returns the `ILanguage` object just created.
* * A welcome message is sent when the user confirms their subscription viaBarry Warsaw2012-03-042-78/+85
| | | | | | | | | | email. Also: - The user's Full Name is included on the To line of a welcome message. - Clean up some tests. - The welcome_message_uri for lists using the default style is set to mailman:///welcome.txt so a welcome message is sent by default.
* - Test welcome message notifications.Barry Warsaw2012-03-041-0/+1
| | | | | - welcome.txt is no longer inserted into subscribeack.txt. This latter is renamed to welcome.txt as the default welcome message.
* * Support downloading templates by URI, including mailman:// URIs. This isBarry Warsaw2012-03-031-1/+1
| | | | | | | | | | | | | used in welcome and goodbye messages, and supports both language and mailing list specifications. E.g. mailman:///test@example.com/it/welc.txt * Schema changes: - welcome_msg -> welcome_message_uri - goodbye_msg -> goodbye_message_uri - send_welcome_msg -> send_welcome_message - send_goodbye_msg -> send_goodbye_message * New `ITemplateLoader` utility.
* * The `join` email command no longer accepts an `address=` argument. ItsBarry Warsaw2012-02-291-4/+5
| | | | | | | | | `digest=` argument now accepts the following values: `no` (for regular delivery), `mime`, or `plain`. Also: - Fix get_queue_messages() to properly sort on the string representation of a header, since it could be a Header instance.
* Flesh out the moderation doctest.Barry Warsaw2012-01-301-1/+1
|
* * Held messages can now be moderated through the REST API. Mailing listBarry Warsaw2012-01-301-3/+2
| | | | | | | | | | | | | | | resources now accept a `held` path component. GETing this returns all held messages for the mailing list. POSTing to a specific request id under this url can dispose of the message using `Action` enums. * `IRequests` interface is removed. Now just use adaptation from `IListRequests` directly (which takes an `IMailingList` object). * `handle_message()` now allows for `Action.hold` which is synonymous with `Action.defer` (since the message is already being held). * `IListRequests.get_request()` now takes an optional `request_type` argument to narrow the search for the given request. - also, print_function is now a standard __future__ import. The template has been updated, but add this to modules as you edit them.
* * Add property `IListmanager.name_compoments` which returns 2-tuples forBarry Warsaw2012-01-271-5/+23
| | | | every mailing list as (list_name, mail_host).
* * Add property `IUserManager.members` to return all `IMembers` in the system.Barry Warsaw2012-01-261-0/+32
|
* Replace the password stuff with flufl.password.Barry Warsaw2012-01-011-2/+2
|
* Fix a few bogus sort order assumptions uncovered by the PostgreSQL tests.Barry Warsaw2011-10-231-2/+3
|
* Finally, all doctests are named .rstBarry Warsaw2011-09-238-0/+0
|
* * New REST resource http://.../<domain>/lists can be GETed in order to findBarry Warsaw2011-08-301-0/+24
|\ | | | | | | | | all the mailing lists in a specific domain (LP: #829765). Given by Stephen A. Goss.
| * merged changes to main branchStephen A. Goss2011-08-232-4/+4
| |\
| * | some tweaks to fix for LP: 829765 based on feedbackStephen A. Goss2011-08-231-0/+23
| | |
* | | * User and Member ids are now proper UUIDs. The UUIDs are pended as unicodes,Barry Warsaw2011-08-304-17/+17
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Rename IDomain.email_host to .mail_host for consistency. Similarly in theBarry Warsaw2011-08-222-4/+4
|/ | | | REST API. (LP: #831660)
* Complete bug 827036 work.Barry Warsaw2011-08-171-0/+0
| | | | | | | | | | | * 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.
* * The IMailingList attribute ``host_name`` has been renamed to ``mail_host``Barry Warsaw2011-06-162-2/+2
| | | | | for consistency. This changes the REST API for mailing list resources. (LP: #787599)
* Major terminology shift:Barry Warsaw2011-06-011-2/+2
| | | | | | | | | | | | | | | | | * Queue runners are now called just 'Runners' since several of them don't manage queue directories. * Ban the term 'qrunner' too. * The master queue runner watcher should now just be called the 'master' or the 'master runner'. * bin/qrunner -> bin/runner * mailman.qrunner log file -> mailman.runner * master-qrunner.lck -> master.lck * master-qrunner.pid -> master.pid Also: * Remove some obsolete files * Begin the .txt -> .rst renaming
* * bounce_unrecognized_goes_to_list_owner -> forward_unrecognized_bounces_to Barry Warsaw2011-05-252-11/+11
| | | | | | | | | | | | * Add an additional option for unrecognized bounce disposition: send it to the site administrators. * Move maybe_forward() from src/mailman/queue/bounce.py to src/mailman/app/bounces.py, refactor and add tests. * Add a LogFileMark class to help with tests that want to check the output to a log file. * OwnerNotification gets a better signature. Instead of tomoderators, the last argument is a roster to send the notification to. If roster is None, then the notification goes to the site administrators.
* * BounceEvent.where -> BounceEvent.contextBarry Warsaw2011-05-131-8/+16
| | | | * Add BounceContext enum
* Add bounce registration and bounce events.Barry Warsaw2011-05-131-0/+76
|
* checkpointingBarry Warsaw2011-05-061-25/+19
|
* Complete the ability to change a subscription address, both internally and viaBarry Warsaw2011-04-251-12/+59
| | | | | | | | | | | | | | the REST API. (LP: #643949) * New resource path in REST API: /addresses/<email>/memberships gets all the memberships for a given email address. * In the REST API, PUTting or PATCHing a list configuration now returns a 204 (No Content) success code instead of a 200 success code with an empty body. * When a user is subscribed with their preferred address, changing the preferred address also changes all subscriptions. * When a user is subscribed with a specific address, their subscription can be changed to any verified address they control. * Use a new naming scheme for doctests with multiple mailing lists.
* Users subscribed to a mailing list via their preferred address show upBarry Warsaw2011-04-221-0/+11
| | | | | correctly in the REST API's list of members. This even correctly tracks changes in their preferred address.
* Add REST API for addresses, and change the user REST API to use it whereBarry Warsaw2011-04-191-14/+11
| | | | | | | | | | 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 can now subscribe to a mailing list, and their preferred address willBarry Warsaw2011-04-171-0/+51
| | | | get delivery.
* Users now have a preferred address which can be set, changed, and deleted.Barry Warsaw2011-04-161-1/+86
| | | | The preferred address must be verified, and controllable by the user.
* Refactor .subscribe() from IAddress to IMailingList.Barry Warsaw2011-04-165-89/+77
|
* encrypt_password(): New convenience function for ensuring that a password isBarry Warsaw2011-04-083-11/+10
| | | | | | | | | | | | | | | 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.
* Merge users into passwordsBarry Warsaw2011-04-081-1/+7
|\