;ò
¢)?Bc           @   s  d  Z  d k Z d k Z d k Z d k Z d k l Z d k l Z d k	 l
 Z
 l Z d k l Z d k l Z d Z e i d e i ƒ Z e g  i Z e i ƒ  i d	 ƒ D] Z e e e ƒ ƒ q¬ [ ƒ Z d
 e i i f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s¢   Standard Mailman message object.

This is a subclass of mimeo.Message but provides a slightly extended interface
which is more convenient for use inside Mailman.
N(   s   Charset(   s   Header(   s   ListTypes
   StringType(   s   mm_cfg(   s   Utilss   , s   ([\d.]+)s   .s   Messagec           B   sA   t  Z d „  Z d „  Z d „  Z e d d „ Z d e d „ Z RS(   Nc         C   s    t  |  _ t i i i |  ƒ d  S(   N(   s   VERSIONs   selfs   __version__s   emails   Messages   __init__(   s   self(    (    s   /var/mailman/Mailman/Message.pys   __init__+   s    	c         C   s   |  i ƒ  Sd  S(   N(   s   selfs   __str__(   s   self(    (    s   /var/mailman/Mailman/Message.pys   __repr__1   s    c         C   s]  | |  _ | i d d d d f ƒ } t | d <| t j o d  Sn | i d ƒ o t |  _ n | i d ƒ o d |  _	 n g  } d } x· |  i D]¬ \ }
 } t | t ƒ o} g  }	 d } xP | i D]E \ } } t | t ƒ o t | ƒ } d } n |	 i | | f ƒ qÇ W| o |	 | _ d } q.n | i |
 | f ƒ q• W| o | |  _ n d  S(   Ns   __version__i    s   _charsets   _default_types
   text/plaini   (   s   ds   selfs   __dict__s   gets   versions   VERSIONs   has_keys   Nones   _charsets   _default_types   headerss   hchangeds   _headerss   ks   vs
   isinstances   Headers   chunkss   cchangeds   _chunkss   ss   charsets
   StringTypes   Charsets   append(   s   selfs   ds   charsets   hchangeds   headerss   ss   versions   cchangeds   vs   chunkss   k(    (    s   /var/mailman/Mailman/Message.pys   __setstate__4   s8    	

 
 
	i    c         C   s  t  i } | t j	 o
 | } n | o d d f } n d d f } x¢ | D]m } |  | }	 |	 o qJ n t	 i
 i |	 g ƒ } y | d \ } } Wn t j
 o
 qJ n X| o PqJ qJ W|  i ƒ  }
 |
 o |
 i ƒ  d } n d } | o | i ƒ  Sn | Sd S(   sÆ  Return the address considered to be the author of the email.

        This can return either the From: header, the Sender: header or the
        envelope header (a.k.a. the unixfrom header).  The first non-empty
        header value found is returned.  However the search order is
        determined by the following:

        - If mm_cfg.USE_ENVELOPE_SENDER is true, then the search order is
          Sender:, From:, unixfrom

        - Otherwise, the search order is From:, Sender:, unixfrom

        The optional argument use_envelope, if given overrides the
        mm_cfg.USE_ENVELOPE_SENDER setting.  It should be set to either 0 or 1
        (don't use None since that indicates no-override).

        unixfrom should never be empty.  The return address is always
        lowercased, unless preserve_case is true.

        This method differs from get_senders() in that it returns one and only
        one address, and uses a different search order.
        s   senders   fromi    i   s    N(   s   mm_cfgs   USE_ENVELOPE_SENDERs   senderfirsts   use_envelopes   Nones   headerss   hs   selfs   fieldvals   emails   Utilss   getaddressess   addrss   realnames   addresss
   IndexErrors   get_unixfroms   unixfroms   splits   preserve_cases   lower(   s   selfs   use_envelopes   preserve_cases   senderfirsts   realnames   hs   addresss   headerss   addrss   fieldvals   unixfrom(    (    s   /var/mailman/Mailman/Message.pys
   get_sender]   s4     	
 
	c   
      C   s  | t j o t i } n g  } xœ | D]” } | t j oN |  i ƒ  p d } y! | i	 d | i
 ƒ  d f ƒ Wq» t j
 o q» Xq' |  i | ƒ } | o | i t i i | ƒ ƒ q' q' Wg  } xJ | D]B } | d }	 |	 t j	 o | o |	 i ƒ  }	 n | i	 |	 ƒ qÌ W| Sd S(   s  Return a list of addresses representing the author of the email.

        The list will contain the following addresses (in order)
        depending on availability:

        1. From:
        2. unixfrom
        3. Reply-To:
        4. Sender:

        The return addresses are always lower cased, unless `preserve_case' is
        true.  Optional `headers' gives an alternative search order, with None
        meaning, search the unixfrom header.  Items in `headers' are field
        names without the trailing colon.
        s    i   N(   s   headerss   Nones   mm_cfgs   SENDER_HEADERSs   pairss   hs   selfs   get_unixfroms   fieldvals   appends   splits
   IndexErrors   get_alls	   fieldvalss   extends   emails   Utilss   getaddressess   authorss   pairs   addresss   preserve_cases   lower(
   s   selfs   preserve_cases   headerss   hs   authorss   pairss	   fieldvalss   pairs   fieldvals   address(    (    s   /var/mailman/Mailman/Message.pys   get_senders—   s.      !	! 
(   s   __name__s
   __module__s   __init__s   __repr__s   __setstate__s   Nones
   get_senders   get_senders(    (    (    s   /var/mailman/Mailman/Message.pys   Message*   s
   			):s   UserNotificationc           B   s2   t  Z d  Z e e e d „ Z d „  Z d „  Z RS(   s&   Class for internally crafted messages.c         C   sä   t  i |  ƒ t } | t j	 o t t i | ƒ ƒ } n | t j	 o |  i
 | | ƒ n | t j o
 d } n t | | d d d d ƒ|  d <| |  d <t | t ƒ o  t i | ƒ |  d <| |  _ n | |  d <| g |  _ d  S(   Ns   (no subject)s   header_names   Subjects   errorss   replaces   Froms   To(   s   Messages   __init__s   selfs   Nones   charsets   langs   Charsets   Utilss
   GetCharSets   texts   set_payloads   subjects   Headers   senders
   isinstances   recips   ListTypes
   COMMASPACEs   joins   recips(   s   selfs   recips   senders   subjects   texts   langs   charset(    (    s   /var/mailman/Mailman/Message.pys   __init__Ä   s     


c         K   s‰   |  i d ƒ o t i | ƒ |  d <n |  i d ƒ o t i i d d ƒ |  d <n |  i d ƒ o d |  d	 <n |  i | |  d
 S(   s|   Sends the message by enqueuing it to the `virgin' queue.

        This is used for all internally crafted messages.
        s
   message-ids
   Message-IDs   dates	   localtimei   s   Dates
   precedences   bulks
   PrecedenceN(	   s   selfs   has_keys   Utilss   unique_message_ids   mlists   emails
   formatdates   _enqueues   _kws(   s   selfs   mlists   _kws(    (    s   /var/mailman/Mailman/Message.pys   send×   s     c         K   sQ   d k  l } | t i ƒ } | i |  d | i ƒ  d |  i	 d d d d | d  S(   N(   s   get_switchboards   listnames   recipss
   nodecoratei   s   reduced_list_headers(   s   Mailman.Queue.sbcaches   get_switchboards   mm_cfgs   VIRGINQUEUE_DIRs   virginqs   enqueues   selfs   mlists   internal_names   recipss   _kws(   s   selfs   mlists   _kwss   get_switchboards   virginq(    (    s   /var/mailman/Mailman/Message.pys   _enqueueë   s    		(   s   __name__s
   __module__s   __doc__s   Nones   __init__s   sends   _enqueue(    (    (    s   /var/mailman/Mailman/Message.pys   UserNotificationÁ   s    	s   OwnerNotificationc           B   s)   t  Z d  Z e e d d „ Z d „  Z RS(   sB   Like user notifications, but this message goes to the list owners.i   c         C   sƒ   | i } | o | i | i ƒ n t i | i d ƒ } | i
 } t i |  | | | | | ƒ |  d =| i ƒ  |  d <| |  _ d  S(   Ns   bouncess   tos   To(   s   mlists   owners   recipss   tomoderatorss   extends	   moderators   Utilss   get_site_emails	   host_names   senders   preferred_languages   langs   UserNotifications   __init__s   selfs   subjects   texts   GetOwnerEmails   _sender(   s   selfs   mlists   subjects   texts   tomoderatorss   langs   senders   recips(    (    s   /var/mailman/Mailman/Message.pys   __init__ü   s    
	c         K   sZ   d k  l } | t i ƒ } | i |  d | i ƒ  d |  i	 d d d d d |  i
 | d  S(   N(   s   get_switchboards   listnames   recipss
   nodecoratei   s   reduced_list_headerss	   envsender(   s   Mailman.Queue.sbcaches   get_switchboards   mm_cfgs   VIRGINQUEUE_DIRs   virginqs   enqueues   selfs   mlists   internal_names   recipss   _senders   _kws(   s   selfs   mlists   _kwss   get_switchboards   virginq(    (    s   /var/mailman/Mailman/Message.pys   _enqueue
  s    		(   s   __name__s
   __module__s   __doc__s   Nones   __init__s   _enqueue(    (    (    s   /var/mailman/Mailman/Message.pys   OwnerNotificationù   s    (   s   __doc__s   res   emails   email.Messages   email.Utilss   email.Charsets   Charsets   email.Headers   Headers   typess   ListTypes
   StringTypes   Mailmans   mm_cfgs   Utilss
   COMMASPACEs   matchs   __version__s   mos   tuples   appends   _[1]s   groups   splits   ss   ints   VERSIONs   Messages   UserNotifications   OwnerNotification(   s
   StringTypes   VERSIONs   mos   Headers   Utilss   Charsets   ss   _[1]s   res   mm_cfgs   OwnerNotifications   ListTypes   UserNotifications   Messages   emails
   COMMASPACE(    (    s   /var/mailman/Mailman/Message.pys   ?   s   				B—8