summaryrefslogtreecommitdiff
path: root/Mailman/Handlers/ToDigest.py
Commit message (Collapse)AuthorAgeFilesLines
...
* First round integration of Juan Carlos's translatable string markings.bwarsaw2000-12-071-13/+18
|
* quotemime(): Gross hack to ensure that the results returned are abwarsaw2000-10-061-1/+2
| | | | string. If the input object is false, return the empty string.
* inject_digest(): Only send a mime digest if there actually are mimebwarsaw2000-09-151-7/+10
| | | | recipients. Likewise for plain text digests.
* process(): When writing the table of contents, be a little more cleverbwarsaw2000-09-121-42/+53
| | | | | | | | | | | about multiline Subject: headings (be sure all continuation lines are indented the same amount). filterDigestHeaders() -> filter_headers() Digest.Present(), filter_headers(): Make sure continuation header lines don't get their initial whitespace eaten. Closes SF bug #114092 (Jitterbug PR#4).
* inject_digest(): Be careful to prune out duplicate addresses whenbwarsaw2000-09-111-11/+10
| | | | | | combining mlist.one_last_digest and mlist.GetDigestMembers(). Part of the fix for SF bug #114089 / Jitterbug PR# 166.
* Digest.TemplateRefs(): GetAbsoluteScriptURL() => GetScriptURL(..., absolute=1)bwarsaw2000-08-011-1/+1
|
* Convert all uses of mlist.LogMsg() to the new syslog() interface.bwarsaw2000-06-021-10/+12
|
* Many changes to make message delivery more robust in the face ofbwarsaw2000-05-081-13/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | failures, bugs, and lock acquisition timeouts. Instead of storing information about the progress of the delivery on the Message object, we pass around a parallel data structure called `msgdata' (current just a dictionary). All calculated information is passed through this object, but this changes the API to handler modules. They now take three arguments: the mailing list, the message object, and the msgdata. WARNING: This may change before 2.0 final. Specific changes include: HandlerAPI DiscardMessage(), HandlerAPI.SomeRecipientsFailed(): New shared exceptions. pipeline_deliver(): removed LIST_PIPELINE: global containing the primary list delivery pipeline DelivertoList: Revamped main entry point into message delivery to list membership. Takes three arguments: the mailing list, the message object, and the msgdata dictionary. This digs the pipeline to use out of the msgdata (allowing resumption of prematurely interrupted pipeline deliveries). Then each module is called in turn, and the shared exceptions are caught. As each module is completed successfully, it is removed from the head of the pipeline. This function returns the number of pipeline modules remaining to be executed (i.e. a return of 0 means DeliverToList() is done with this message and it can be dequeued). A catch-all is included in case some unexpected exception occurs (say a bug or typo in one of the delivery modules). Such an error will queue the message, so at least it doesn't just get lost. We try to never just lose a message. RedeliverMessage(), DeliverToUser(): reimplemented in terms of DeliverToList(). Acknowledge, AfterDelivery, CalcRecips, Cleanse, CookHeaders, Decorate, Replybot, ToArchive, ToUsenet Fix the function signature to match the new API (three arguments), and changed the implementations to extract delivery information from msgdata instead of as attributes of the message object. Approved Same as above, but also removed NotApproved exception. LoopError is now multiply derived from HandlerAPI.DiscardMessage and Errors.MMLoopingPost. Hold Same as above, but also changed slightly the way an exception is raised when a message is held. hold_for_approval() now takes four arguments (the msgdata parameter has been added), and the exc object can be a class or instance. If it's a class, it is simply zero-arg'd instantiated. We also use the str() of the exception to get us the reason for the hold. This allows us to override HandlerAPI.MessageHeld.__str__() for MessageToBig so that we can include the size of the message being held. SMTPDirect Same as above, but instead of explicitly enqueuing the messages when some or all of the recipient deliveries failed, just raise a HandlerAPI.SomeRecipientsFailed exception and let DeliverToList() manage the enqueuing. Thus queue_message() is removed. Sendmail Same as above, but if any chunks fail delivery, those recipients are queued by raising SomeRecipientsFailed. SpamDetect Same as above, except that if a regexp matches, a SpamDetect exception is raised directly. The DeliverToList() framework discards these spam messages instead of holding them for approval. ToDigest Same as above, except that if a digest is prepared for delivery, it is not sent directly via mlist.Post(). Instead, the message is queued for delivery, thereby relinquishing the lock soon. This means that digests will only be sent the next time qrunner runs.
* Update the copyright lines to include the years 1999 & 2000.bwarsaw2000-03-211-1/+1
|
* Digest.ComposeBaseHeaders(): Set the From: field of the digest messagebwarsaw2000-02-031-1/+1
| | | | to listname-request instead of listname-admin.
* process(): Use only the From: field to get the name to stick in thebwarsaw1999-12-161-1/+8
| | | | | | TOC. Try to use the From:'s name comment, otherwise fallback to just the address. Do /not/ use the Sender: field because by now it's been munged into the list-admin's address.
* Present(): Need blank line after Content-description header so MIMEbwarsaw1999-11-301-0/+1
| | | | digests unpack correctly (bug found by Sjoerd Mullender).
* Several general patches to typos resulting from the new pipelinebwarsaw1999-11-111-15/+22
| | | | architecture.
* (inject_digest): mlist.inject() => mlist.Post()bwarsaw1999-11-101-2/+4
|
* New pipeline delivery modulebwarsaw1999-11-101-0/+346
"""Add the message to the list's current digest and possibly send it. This handler will add the current message to the list's currently accumulating digest. If the digest has reached its size threshold, it is delivered by creating an OutgoingMessage of the digest, setting the `isdigest' attribute, and injecting it into the pipeline. """