summaryrefslogtreecommitdiff
path: root/src/mailman/utilities
Commit message (Collapse)AuthorAgeFilesLines
...
* * The IMailingList attribute ``host_name`` has been renamed to ``mail_host``Barry Warsaw2011-06-163-5/+14
| | | | | for consistency. This changes the REST API for mailing list resources. (LP: #787599)
* Add non-English tests of the probe message.Barry Warsaw2011-05-081-5/+24
|
* checkpointingBarry Warsaw2011-05-061-3/+2
|
* * Fix setup.py version regexp.Barry Warsaw2011-05-031-16/+14
| | | | | | * Move get_verp() to class-based for easy overridding. Hook up StandardVERP but not yet ProbeVERP. * Use uuid.uuid4() to get unique id.
* Start the enablement of bounce detection.Barry Warsaw2011-05-012-0/+90
| | | | | | | | | | * Move VERP header extraction to mailman.app.bounces, and ports the implementation to the get_verp() function. * Restore the [mta] verp_regexp value which got lost along the way. * Move mailman.email.utils to mailman.utilities.email and add a test for split_email() * Move specialized_message_from_string() from test_documentation to mailman.testing.helpers.
* Checkpointing for refactoring.Barry Warsaw2011-04-271-1/+0
|
* Give IMembers a unique member id. We have to do this in order to give them aBarry Warsaw2011-04-221-7/+18
| | | | | | | | | | | | | | | | | | | | | | | 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 initialization of lock object.Barry Warsaw2011-04-081-7/+11
|
* Merge passwords into restBarry Warsaw2011-04-082-2/+73
|\
| * encrypt_password(): New convenience function for ensuring that a password isBarry Warsaw2011-04-082-2/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 passwords into restBarry Warsaw2011-04-072-0/+73
|\|
| * make_user_friendly_password(): Ported from Mailman 2.1.Barry Warsaw2011-04-072-0/+73
| |
* | More fleshing out of the users REST API.Barry Warsaw2011-04-042-14/+52
|/ | | | | | | | | | | | | | * 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.
* * Re-organize the interface between buildout.cfg and the zope.testing layerBarry Warsaw2011-04-012-4/+74
| | | | | | | | | | | | | | | | | | | 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.
* Reimplement wrap() using modern techniques, and finally get rid of Utils.py!Barry Warsaw2011-03-174-14/+246
|
* Update comment.Barry Warsaw2011-03-161-1/+5
|
* Utils.maketext() and Utils.findtext() are gone.Barry Warsaw2011-03-162-9/+4
|
* make() and some tests.Barry Warsaw2011-03-162-4/+113
|
* Checkpointing migration of findtext() and maketext() out of Utils.py. TestsBarry Warsaw2011-03-162-15/+254
| | | | added. TODO: flesh out make().
* Basic tests for Utils.py findtext(). This will go away, but for now it'sBarry Warsaw2011-03-152-0/+142
| | | | useful for ensuring current functionality.
* More eradication of Utils.py.Barry Warsaw2011-02-261-0/+39
|
* Cue Freddy Mercury. Another one bites the dust.Barry Warsaw2011-02-251-0/+7
|
* Move oneline() out of Utils.py.Barry Warsaw2011-02-251-1/+36
|
* Move passwords module to the utilities subpackage.Barry Warsaw2011-02-252-0/+467
|
* Happy New Year.Barry Warsaw2011-01-017-7/+7
|
* Fairly significant change to the way member and nonmember moderation occurs.Barry Warsaw2010-12-291-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Now, nonmembers are represented by a separate roster of IMembers, the latter which has grown a `moderation_action` enum. When that action is `defer`, then the normal processing rules apply. Anything else and the `moderation` chain is jumped to for a shortcut to moderation (which may include immediate acceptance). TODO: handle unregistered nonmembers. Details: * The member-moderation rule is renamed to just moderation, and handles both members and nonmembers (though the latter must currently be registered). * The moderation rule is moved up in the builtin chain. It is now checked after `approved`, `emergency`, and `loop`, but before the normal moderation checks. This means that nonmember postings will be (by default) held much earlier. * IMember.is_moderated is removed. * IMember.moderation_action is added. * IMailingList.default_member_moderation is removed. * IMailingList.default_member_action and IMailingList.default_nonmember_action are added. * MemberRole.nonmember is added.
* Fix the obvious errors identified by pyflakes. Skip false positives (mostlyBarry Warsaw2010-10-082-3/+3
| | | | | due to _() interpolation) and a few other problems that did not have immediately obvious fixes.
* host_name and RFC 2369 tests.Barry Warsaw2010-05-061-0/+13
|
* Basic importer test.Barry Warsaw2010-05-062-0/+64
|
* CheckpointingBarry Warsaw2010-05-061-0/+0
|
* CheckpointingBarry Warsaw2010-05-062-2/+1
|
* Refactor the actual imports into a utility. This leaves the command toBarry Warsaw2010-05-061-0/+82
| | | | process just the front-end.
* Happy New Year.Barry Warsaw2010-01-015-5/+5
|
* Refactor __import__'s into a separate utility module.Barry Warsaw2009-05-161-0/+59
|
* __all__Barry Warsaw2009-03-091-0/+4
|
* Complete the porting of the autoresponse implementation, with no need of theBarry Warsaw2009-02-191-1/+1
| | | | | | old pickle attributes. Fix a typo in the datetime.py module.
* Add IAutoResponseSet.last_response() and fix a few bugs with the datetimeBarry Warsaw2009-02-191-3/+4
| | | | | testing harness. Remove the {admin,postings,request}_response attributes, but these are not apparently tested.
* Add a "mock and monkey" layer to set up testing infrastructure, e.g. forBarry Warsaw2009-02-171-0/+69
| | | | | | | | | | predictable dates and times. Fill out the autorespond.txt test to show that when the date flips over, the response counts reset. Add a date/time factory which we should use rather than the built-in datetime for now() and today() so that they can be appropriately tested.
* Massive digester rework.Barry Warsaw2009-02-041-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves actual digest creation and sending into a new queue runner. That way, digest creation does not block the main incoming processor. Lots of code clean up and reorganization too, and many fixes. digest_last_sent_at: Make this a DateTime digest_size_threshold: Make this a Float digest_volume_frequency: Make this an Enum DigestFrequency: new enum Fix up IMailingList interface to reflect reality. In Runner base class, allow for msg.get_sender() to return a False value. If this happens (as it can with the empty marker messages used to signal the digester that there's work to do), just use the list's preferred language. Give the retry.py and incoming.py queue runner modules some proper epilogues. The EmptyingRunner (for testing) logs itself as the runner its wrapping. The digest file name now ends in .mmdf since that's the format we're using. Add 'create_list' to doctest globals. Add a Mailbox class to add support for the context manager protocol.
* Push the source directory into a 'src' subdirectory so that zc.buildout worksBarry Warsaw2009-01-253-0/+137
correctly regardless of how it's used.