summaryrefslogtreecommitdiff
path: root/src/mailman/chains (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Reimplement wrap() using modern techniques, and finally get rid of Utils.py!Barry Warsaw2011-03-171-2/+1
|
* Utils.maketext() and Utils.findtext() are gone.Barry Warsaw2011-03-161-15/+18
|
* Move oneline() out of Utils.py.Barry Warsaw2011-02-251-1/+2
|
* Split member and nonmember moderation.Barry Warsaw2011-01-023-19/+77
| | | | | | | | | | | | | | | | * member-moderation happens at the same place in the built-in chain that the previously named moderation rule happens. nonmember-moderation happens after all the other normal moderation rules. * Handle unsubscribed nonmember posts. Other changes: * Message.senders now filters out Nones and empty strings. * Various test cleanups and simplifications. * More `address` -> `email` fixes. * Give Link class a useful repr. * Fix a potential UnboundLocalError. * Various other small changes.
* Happy New Year.Barry Warsaw2011-01-018-8/+8
|
* Fairly significant change to the way member and nonmember moderation occurs.Barry Warsaw2010-12-293-62/+80
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Clean up from the previous commit.Barry Warsaw2010-12-281-0/+0
| | | | | | * member_moderation_action exposed in IMailingList * REST configuration test for member_moderation_action, send_welcome_msg, and welcome_msg.
* This is part 1 of the merge of Jimmy Bergman's branchBarry Warsaw2010-12-285-2/+251
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lp:~jimmy-sigint/mailman/restapi_additional_attributes Ostensibly, this adds support for a few additional attributes through the REST API: * default_member_moderation * generic_nonmember_action * member_moderation_action * reply_goes_to_list * send_welcome_msg * welcome_msg However, I had never previously fleshed out the conversion of default_member_moderation and member_moderation_action into the MM3 way of things. That is now done. Non-member moderation still needs to be done. Specific changes: * mailman.chains.base.Chain no longer self registers * The built-in chain gets a new link for checking 'member-moderation'. If this rule matches, it jumps to the 'member-moderation' chain, which checks member_moderation_action and returns a link that jumps to the appropriate terminal chain. * Chain initialization is done by the same auto-detection as rules, handlers, etc. The one tricky thing is that abstract base classes such as Chain and TerminalChainBase can't be instantiated. For now, there's an ugly special case to skip these. * default_member_moderation is now exposed in the IMailingList interface. * Member.is_moderated gets set in the constructor from the mailing list's default_member_moderation. * The 'moderation' rule is renamed 'member-moderation'. TODO: * Work out non-member moderation * Add member_moderation_action to IMailingList * Double check tests for reply_goes_to_list, send_welcome_msg, and welcome_msg
* Fix the obvious errors identified by pyflakes. Skip false positives (mostlyBarry Warsaw2010-10-081-3/+3
| | | | | due to _() interpolation) and a few other problems that did not have immediately obvious fixes.
* No longer touch the Sender or Errors-To headers. We can no longer justifyBarry Warsaw2010-06-291-1/+0
| | | | | setting these based on RFC 5322, and modern MTAs no longer need us to do so for proper bounce processing.
* So long X-BeenThere, and thanks for all the fish.Barry Warsaw2010-02-161-3/+3
|
* Chains now fire Zope events in their _process() implementation.Barry Warsaw2010-02-165-6/+59
| | | | Clean up the chains.txt doctest to use this and other recent improvements.
* Happy New Year.Barry Warsaw2010-01-017-7/+7
|
* * Refactor the language manager off of the config object and into a utility.Barry Warsaw2009-12-101-2/+4
| | | | | | | | * Fix a few small typos in exception handlers. * Move the initialization of the Zope Component Architecture into the first initialization step. The only reason we couldn't do that previously was because the domain object referenced the config, causing a circularity problem. Refactor the Domain implementation to avoid that.
* Factor out most of the i18n subsystem and convert to using the flufl.i18nBarry Warsaw2009-11-156-9/+8
| | | | package.
* As before, replace config.db.requests and config.db.pendings with utilities.Barry Warsaw2009-08-261-2/+2
|
* Remove the user_manager attribute from config.db and expose it as anBarry Warsaw2009-08-261-2/+5
| | | | IUserManager utility.
* Refactor.Barry Warsaw2009-02-191-3/+63
|
* Eradicate hold_and_cmd_autoresponses.Barry Warsaw2009-02-171-1/+2
|
* Much clean up of the language code, though more can be done. Factor out theBarry Warsaw2009-02-121-8/+8
| | | | | | | 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.
* Move mailman.Message to mailman.email.Message. Rename Message.get_sender() toBarry Warsaw2009-02-091-8/+8
| | | | | | | | | Message.sender (property) and Message.get_senders() to Message.senders (another property). The semantics of .sender is slightly different too; it no longer consults config.mailman.use_envelope_sender. Add absolute_import and unicode_literals to Utils.py, and clean up a few imports.
* Push the source directory into a 'src' subdirectory so that zc.buildout worksBarry Warsaw2009-01-258-0/+706
correctly regardless of how it's used.