import re
from Mailman import Errors

def process(mlist, msg, msgdata):

    message_text=msg.as_string()
    recepients = msg.get_all('To')

    # GNOME
    rGNOME=re.compile('/bg\\.po')
    aGnome='svn-commits-list@gnome.org'

    try:
        i = recepients.index(aGnome)
        # To GNOME, so check body
        if None==rGNOME.search(message_text):
            # Discard! Does not contain what we want
            raise Errors.DiscardMessage('GNOME commit - not bg translation')
        else:
            # Set our message to approved
            msgdata['approved'] = True
    except ValueError:
        # OK - not GNOME svn
        pass

    # KDE
    rKDE=re.compile('/bg/(doc)?messages')
    aKDE='kde-commits@kde.org'
    
    try:
        i = recepients.index(aKDE)
        # To KDE, so check subject
        if None==rKDE.search(msg.get('subject')):
            # Discard! Does not contain what we want
            raise Errors.DiscardMessage('KDE commit - not bg translation')
        else:
            # Set our message to approved
            msgdata['approved'] = True
    except ValueError:
        # OK - not KDE svn
        pass


"""

Put the handler in the pipeline before Moderate and set

    msgdata['approved'] = True

for those messages you want to accept.


    f = open("/tmp/AshCommit.log", "a")

    f.write("\n============================\n")
 
    f.write("\nMLIST\n")
    f.write("mlist.real_name: "+mlist.real_name)
    f.write("\n")
    f.write("mlist.internal_name(): "+mlist.internal_name())
    f.write("\n")
    f.write("mlist.GetListEmail(): " + mlist.GetListEmail())
    f.write("\n")
    f.write("mlist.GetRequestEmail(): "+ mlist.GetRequestEmail())

    f.write("\nMSGDATA\n")
    f.write("msgdata.get('sender'): " + msgdata.get('sender', "NONE"))
    f.write("\n")
    f.write("msgdata.get('original_sender'): " + msgdata.get('original_sender', "NONE"))
    f.write("\n")
    f.write("\nZZZZZ\n")
    f.write("msgdata.get('origsubj'): " + msgdata.get('origsubj', "NONE"))
    f.write("\n")
    f.write("\nMORE \n")
#    f.write("msgdata.get('tolist'): " + msgdata.get('tolist', "NONE"))

    f.write("\nMSG\n")
    f.write("msg.get_sender(): " + msg.get_sender())
    f.write("\n")
    f.write("msg.get('subject'): "+ msg.get('subject', "NONE"))
    f.write("\n")
    f.write("msg.get_all('To'): "+ msg.get('To'))
    recepients = msg.get('To')
    try:
        i = recepients.index('dict-notifications@fsa-bg.org')
        f.write("\nIM AGO dict\n")
    except ValueError:
        f.write("\nNIAMA GO dict\n")

    try:
        i = recepients.index('DRANDRAN')
        f.write("\nIM AGO DRANDRAN\n")
    except ValueError:
        f.write("\nNIAMA GO DRANDRAN\n")


    f.write("\n!!!!!!!!!!as_string(False)!!!!!!!!!!!!!!\n")
    f.write(msg.as_string(False))
    f.write("\n@@@@@@@@@@as_string(True)@@@@@@@@@@@@@@\n")
    f.write(msg.as_string(True))


    f.write("\n\n\n\nTEST\n")
    if None==r1.search(message_text):
        f.write("\nNo match\n")
    else:
        f.write("\nYES MATCH\n")


    f.close()
"""