~futatuki/mailman/2.1-forbid-subscription

« back to all changes in this revision

Viewing changes to Mailman/Handlers/Acknowledge.py

  • Committer:
  • Date: 2003-01-02 05:25:50 UTC
  • Revision ID: vcs-imports@canonical.com-20030102052550-qqbl1i96tzg3bach
This commit was manufactured by cvs2svn to create branch
'Release_2_1-maint'.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
 
2
#
 
3
# This program is free software; you can redistribute it and/or
 
4
# modify it under the terms of the GNU General Public License
 
5
# as published by the Free Software Foundation; either version 2
 
6
# of the License, or (at your option) any later version.
 
7
 
8
# This program is distributed in the hope that it will be useful,
 
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
# GNU General Public License for more details.
 
12
 
13
# You should have received a copy of the GNU General Public License
 
14
# along with this program; if not, write to the Free Software 
 
15
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
16
 
 
17
"""Send an acknowledgement of the successful post to the sender.
 
18
 
 
19
This only happens if the sender has set their AcknowledgePosts attribute.
 
20
This module must appear after the deliverer in the message pipeline in order
 
21
to send acks only after successful delivery.
 
22
 
 
23
"""
 
24
 
 
25
from Mailman import mm_cfg
 
26
from Mailman import Utils
 
27
from Mailman import Message
 
28
from Mailman import Errors
 
29
from Mailman.i18n import _
 
30
 
 
31
 
 
32
 
 
33
def process(mlist, msg, msgdata):
 
34
    # Extract the sender's address and find them in the user database
 
35
    sender = msgdata.get('original_sender', msg.get_sender())
 
36
    try:
 
37
        ack = mlist.getMemberOption(sender, mm_cfg.AcknowledgePosts)
 
38
        if not ack:
 
39
            return
 
40
    except Errors.NotAMemberError:
 
41
        return
 
42
    # Okay, they want acknowledgement of their post.  Give them their original
 
43
    # subject.  BAW: do we want to use the decoded header?
 
44
    origsubj = msgdata.get('origsubj', msg.get('subject', _('(no subject)')))
 
45
    # Get the user's preferred language
 
46
    lang = msgdata.get('lang', mlist.getMemberLanguage(sender))
 
47
    # Now get the acknowledgement template
 
48
    realname = mlist.real_name
 
49
    text = Utils.maketext(
 
50
        'postack.txt',
 
51
        {'subject'     : origsubj,
 
52
         'listname'    : realname,
 
53
         'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1),
 
54
         'optionsurl'  : mlist.GetOptionsURL(sender, absolute=1),
 
55
         }, lang=lang, mlist=mlist, raw=1)
 
56
    # Craft the outgoing message, with all headers and attributes
 
57
    # necessary for general delivery.  Then enqueue it to the outgoing
 
58
    # queue.
 
59
    subject = _('%(realname)s post acknowledgement')
 
60
    usermsg = Message.UserNotification(sender, mlist.GetBouncesEmail(),
 
61
                                       subject, text, lang)
 
62
    usermsg.send(mlist)