summaryrefslogtreecommitdiff
path: root/src/mailman/styles (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Clean up of style test code, along with refactoring of corner cases toBarry Warsaw2012-03-124-0/+237
| | | | unittests where they belong.
* * Mailing lists get multiple chains and pipelines. For example, normalBarry Warsaw2012-03-071-4/+5
| | | | | | | | | | | postings go through the `posting_chain` while messages to owners to through `owners_chain`. The default `built-in` chain is renamed to `default-posting-chain` while the `built-in` pipeline is renamed `default-posting-pipeline`. * Schema changes: - start_chain -> posting_chain - pipeline -> posting_pipeline
* Template indirection now also in effect for regular and digest headers andBarry Warsaw2012-03-041-14/+5
| | | | | | | | | | | | footers, using the same semantics and algorithm as for welcome and goodbye messages. Additional schema changes: - msg_header -> header_uri - msg_footer -> footer_uri - digest_header -> digest_header_uri - digest_footer -> digest_footer_uri
* * A welcome message is sent when the user confirms their subscription viaBarry Warsaw2012-03-041-1/+1
| | | | | | | | | | 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.
* * Support downloading templates by URI, including mailman:// URIs. This isBarry Warsaw2012-03-031-4/+4
| | | | | | | | | | | | | 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.
* copybumpBarry Warsaw2012-01-012-2/+2
|
* * Implement the style manager as a utility instead of an attribute hangingBarry Warsaw2011-10-241-1/+1
| | | | | | off the `mailman.config.config` object. * Fixed bogus use of `bounce_processing` attribute (should have been `process_bounces`, with thanks to Vincent Fretin. (LP: #876774)
* * The IMailingList attribute ``host_name`` has been renamed to ``mail_host``Barry Warsaw2011-06-161-1/+1
| | | | | for consistency. This changes the REST API for mailing list resources. (LP: #787599)
* * bounce_unrecognized_goes_to_list_owner -> forward_unrecognized_bounces_to Barry Warsaw2011-05-251-1/+4
| | | | | | | | | | | | * 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.
* Eliminate Utils.get_pattern() and in the process, completely revampBarry Warsaw2011-02-251-2/+0
| | | | | | | | | subscription bans so as not to have to rely on BLOBS or pickles in the database. Also, be sure to include .rst files in both doctests and in the packaged tarballs. With the now awesome reST mode for Emacs, I plan to rename all .txt doctest files to .rst.
* Happy New Year.Barry Warsaw2011-01-012-2/+2
|
* Fairly significant change to the way member and nonmember moderation occurs.Barry Warsaw2010-12-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | 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/+0
| | | | | due to _() interpolation) and a few other problems that did not have immediately obvious fixes.
* Access mailing list configuration via RESTBarry Warsaw2010-08-101-0/+2
| | | | | | | | | | * last_post_time -> last_post_at * protocol -> scheme * creation_date _> created_at * last_post_time -> last_post_at * Add an extended JSON encoder for datetimes * Be sure to initialize convert_html_to_plaintext and filter_content in the default style.
* * A start to import of Mailman 2.1 config.pck files.Barry Warsaw2010-04-051-2/+2
| | | | * Move DigestFrequency from mailinglist to digests.
* Happy New Year.Barry Warsaw2010-01-012-2/+2
|
* Factor out most of the i18n subsystem and convert to using the flufl.i18nBarry Warsaw2009-11-151-1/+1
| | | | package.
* De-u-literal-ify our doctests.Barry Warsaw2009-07-181-1/+1
|
* Refactor __import__'s into a separate utility module.Barry Warsaw2009-05-161-3/+2
|
* rsplit -> rpartitionBarry Warsaw2009-05-151-3/+3
|
* Move the Action and NewsModeration enums into their own interface files.Barry Warsaw2009-03-251-1/+2
|
* There are some situations where the RFC 2919 List-ID header must be explicitlyBarry Warsaw2009-03-031-4/+5
| | | | | set. Make this possible by moving list_id to an attribute of the MailingList object instead of hard-coding its calculation in cook_headers.py.
* Convert content filter and acceptable aliases away from pickle types.Barry Warsaw2009-03-031-13/+0
| | | | | | | * Add an adapter from mailing lists to acceptable alias set. Use this instead of the old acceptable alias interface, which is not removed. * Add contentfilter table * Add a bunch of missing docstrings
* acceptable_aliases are no longer a pickle.Barry Warsaw2009-02-231-1/+0
|
* Get rid of one_last_digest. Move this into a separate OneLastDigest table.Barry Warsaw2009-02-221-1/+0
| | | | | | | | | | | | | Make it explicit to get the last digest (I could imagine an user selecting not to). Actually add tests for this. Start to get rid of 'from storm.locals import *' in favor of more specific imports. Start to use Store.of() instead of config.db.store where we can. Rework (delivery)MemberRosters to use the Member attributes. This ensures that the layered lookup happens at the expense of query optimization. Sundry and various cleanups.
* Major cleanup of the automatic response stuff.Barry Warsaw2009-02-191-9/+6
| | | | | | | | | inject_message() grows a keyword argument dictionary which gets merged into the message metadata. Move NODELTA into the autorespond interface as ALWAYS_REPLY. Convert the integer response values into the ResponseAction enum.
* Add IAutoResponseSet.last_response() and fix a few bugs with the datetimeBarry Warsaw2009-02-191-3/+0
| | | | | testing harness. Remove the {admin,postings,request}_response attributes, but these are not apparently tested.
* Eradicate hold_and_cmd_autoresponses.Barry Warsaw2009-02-171-1/+0
|
* Much clean up of the language code, though more can be done. Factor out theBarry Warsaw2009-02-121-3/+3
| | | | | | | language manager stuff into a separate Language class, and be clearer in the APIs about whether we want a language code or a Language instance. The impetus to this was to get rid of Utils.GetCharSet(), which is done.
* Massive digester rework.Barry Warsaw2009-02-041-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/+344
correctly regardless of how it's used.