ó
Jü½cc           @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z m Z d d l m Z m Z m Z d d l m Z d d l m Z d d l m Z d d l m  Z  d d l m! Z! d d l m" Z" d d l# m$ Z$ d d l% m& Z& d d l' m( Z( d d l) m* Z* d d l# m$ Z$ d d l+ m, Z- d d l. m/ Z/ e! j0 Z0 d Z1 d Z2 y e3 e4 f Wn e5 k
 röd Z3 d Z4 n Xd „  Z6 d „  Z, d „  Z7 d „  Z8 d S(    sB   Add the message to the list's current digest and possibly send it.iÿÿÿÿN(   t   ListType(   t   StringIO(   t   Parser(   t	   Generator(   t   MIMEBase(   t   MIMEText(   t   MIMEMessage(   t   getaddressest
   formatdate(   t   decode_headert   make_headert   Header(   t   Charset(   t   mm_cfg(   t   Utils(   t   Message(   t   i18n(   t   Errors(   t   Mailbox(   t   ENABLED(   t   decorate(   t   get_switchboard(   t   process(   t   syslogu    t    i   i    c         C   sW   t  | ƒ j ƒ  p | } t |  t ƒ r7 |  j | d ƒ S|  j | d ƒ j | d ƒ Sd  S(   Nt   replace(   R   t   get_output_charsett
   isinstancet   unicodet   encodet   decode(   t   textt   lcsett   ocset(    (    s8   /export/web/mailman/mailman/Mailman/Handlers/ToDigest.pyt   to_cset_outG   s    c   
      C   sP  |  j  s | j d ƒ r d  St j j |  j ƒ  d ƒ } t j d ƒ } z t | d ƒ } Wd  t j | ƒ Xt | ƒ } | j	 | ƒ | j
 ƒ  t j j | ƒ } |  j d k rB| d |  j k rBy+ | j d ƒ t |  | ƒ t j | ƒ WqBt k
 r>} t d d | ƒ t ƒ  }	 t j d	 |	 ƒ t d |	 j ƒ  ƒ qBXn  | j ƒ  d  S(
   Nt   isdigests   digest.mboxi   s   a+i    g      @t   errors   send_digests() failed: %st   file(   t
   digestablet   gett   ost   patht   joint   fullpatht   umaskt   openR   t   AppendMessaget   flusht   getsizet   digest_size_threshholdt   seekt   send_digestst   unlinkt	   ExceptionR   R   t	   tracebackt	   print_exct   getvaluet   close(
   t   mlistt   msgt   msgdatat   mboxfilet   omaskt   mboxfpt   mboxt   sizet   errmsgt   s(    (    s8   /export/web/mailman/mailman/Mailman/Handlers/ToDigest.pyR   Q   s.    
	c   	      C   sº  |  j  rit } t j |  j  ƒ } t j t j ƒ  ƒ } |  j } | d k rh | d | d k  rh t } në | d k r‘ | d | d k r‘ t } nÂ | d k rÂ | d d | d d k rÂ t } n‘ | d k r*t t j d | ƒ ƒ } t t j d | ƒ ƒ } | | k s| d | d k rSt } qSn) | d k rS| d | d k rSt } n  | ri|  j ƒ  qin  t j ƒ  |  _  t	 j
 ƒ  } t	 j |  j ƒ z t |  | ƒ Wd  t	 j | ƒ Xd  S(   Ni    i   i   i   i   s   %Wi   (   t   digest_last_sent_att   Falset   timet	   localtimet   digest_volume_frequencyt   Truet   intt   strftimet   bump_digest_volumeR   t   get_translationt   set_languaget   preferred_languaget   send_i18n_digestst   set_translation(	   R:   R?   t   bumpt   timetupt   nowt   freqt   weeknum_lastt   weeknum_nowt   otranslation(    (    s8   /export/web/mailman/mailman/Mailman/Handlers/ToDigest.pyR3   z   s4    		 	 	(	  	c   4      C   së	  t  | ƒ } |  j } t j | ƒ } t | ƒ j p6 | } |  j } |  j } |  j } t	 d ƒ }	 t
 |	 | d d ƒ}
 t j ƒ  } d | d <d | d <|  j ƒ  | d <|
 | d <|  j ƒ  | d	 <|  j ƒ  | d
 <t d d ƒ | d <t j |  ƒ | d <t ƒ  } t j ƒ  } |  j ƒ  | d <|
 | d <|  j ƒ  | d	 <|  j ƒ  | d
 <t d d ƒ | d <t j |  ƒ | d <d d } d d } t j d i |  j d 6|  j ƒ  d 6|  j d d d ƒd 6|  j ƒ  d 6|  j ƒ  d 6d |  ƒ} t | d | ƒ} |	 | d <| j | ƒ | | IJ| Jt j d d |  j ƒ r‡t |  |  j t	 d ƒ ƒ } t | d | ƒ} t	 d  ƒ | d <| j | ƒ | | IJ| Jn  t ƒ  } | t	 d! ƒ IJg  } d" } | j ƒ  } xÁ| d  k	 r{| d k rå| j ƒ  } q»n  | d 7} | j | ƒ | j d# t	 d$ ƒ ƒ } t j | | ƒ } t j d% t j  |  j! ƒ | t j" ƒ } | r{| | j# d& ƒ  | | j$ d& ƒ } n  d } t% t j | j d' d ƒ | ƒ g ƒ } t& | t' ƒ rå| rå| d" d" } | så| d" d } qån  | rød( | } n  t j( d) | | f d* ƒ } | j) d+ ƒ } t* | d, ƒ t* | ƒ d k rS| j | ƒ n | d, c | 7<t+ } xC | D]; }  | r•| d- I|  IJt, } qp| d. I|  j- ƒ  IJqpWi  }! i  }" x" t. j/ t. j0 D] } t+ |" | <qÌW|" j1 ƒ  }" x$ |" D] }# | j2 |# g  ƒ |! |# <qóWx | j1 ƒ  D] } | | =q Wx- |" D]% }# x |! |# D] }$ |$ | |# <qIWq8W| | d/ <| j ƒ  } q»W| d" k rŒd  St3 | j4 ƒ  | ƒ }% t |% d | ƒ}& t	 d0 ƒ |& d <| j |& ƒ | |% IJ| J| | IJ| Jt5 d1 d2 ƒ }' | j |' ƒ t+ } xÌ| D]Ä} |' j t6 t7 j8 | ƒ ƒ ƒ | rFt, } n | | IJ| Jy t9 |  | ƒ } Wn' t: j; k
 r| t	 d3 ƒ IJqn Xxi t. j0 D]^ }( | |( r›t j( d4 |( t j | |( | ƒ f ƒ }) d5 j< |) j) d+ ƒ ƒ }) | |) IJq›q›W| J| j= d6 t+ ƒ p,| j> ƒ  j) d7 d ƒ d }* | j? d ƒ }+ |+ r¹|+ | k r¹|+ | k r¹y" t@ |* |+ d8 ƒ jA | d8 ƒ }* Wq¹tB tC f k
 rµt@ |* | d8 ƒ jA | d8 ƒ }* q¹Xn  | |* IJ|* jD d+ ƒ s| JqqWt j d d |  jE ƒ r„t |  |  jE t	 d9 ƒ ƒ }, t |, d | ƒ}- t	 d: ƒ |- d <| j |- ƒ | | IJ| J| d; t	 d: ƒ IJ| J| |, IJ| J| | IJ| Jn  t	 d< ƒ |	 }. |. | _F | |. IJ| d= t* |. ƒ IJ|  j d 7_ tG t. jH ƒ }/ g  }0 g  }1 |  jI ƒ  |  jJ j1 ƒ  }2 xp |  jK |2 ƒ D]_ }3 |3 d  k s	|  jL |3 ƒ tM k r;	q	n  |  jN |3 t. jO ƒ r`	|0 j |3 ƒ q	|1 j |3 ƒ q	W|  jJ jP ƒ  |/ jQ | d> |1 d? |  jR ƒ  d@ t+ ƒ| jS t3 | j4 ƒ  | ƒ | ƒ |/ jQ | d> |0 d? |  jR ƒ  d@ t+ ƒd  S(A   Ns4   %(realname)s Digest, Vol %(volume)d, Issue %(issue)dt   header_namet   Subjects   multipart/mixeds   Content-Types   1.0s   MIME-Versiont   Fromt   Tos   Reply-ToRG   i   t   Dates
   Message-IDt   -iF   i   s   masthead.txtt	   real_namet   got_list_emailt   listinfot   absolutet   got_listinfo_urlt   got_request_emailt   got_owner_emailR:   t   _charsets   Content-Descriptions   \sR   s   digest headers   Digest Headers   Today's Topics:
i    t   subjects   (no subject)s   (re:? *)?(%s)i   t   froms    (%s)s   %2d. %siA   s   
iÿÿÿÿt    s        R   s&   Today's Topics (%(msgcount)d messages)t	   multipartt   digests%   [Message discarded by content filter]s   %s: %ss   
	R   s   

R   s   digest footers   Digest Footers	   Subject: s   End of t   *t   recipst   listnameR#   (T   R   RO   R   t
   GetCharSetR   t   output_charsetR_   t   volumet   next_digest_numbert   _R   R   t   GetRequestEmailt   GetListEmailR   t   unique_message_idR   t   maketextt   GetScriptURLt   GetOwnerEmailR   t   attacht   ret   subt   digest_headerR   t   nextt   Nonet   appendR'   t   onelinet   matcht   escapet   subject_prefixt
   IGNORECASEt   startt   endR   R   R    t   wrapt   splitt   lenRI   RE   t   lstripR   t   MIME_DIGEST_KEEP_HEADERSt   PLAIN_DIGEST_KEEP_HEADERSt   keyst   get_allR"   R8   R   R   t   copyt   deepcopyt   scrubberR   t   DiscardMessageR*   t   get_payloadt	   as_stringt   get_content_charsetR   R   t   UnicodeErrort   LookupErrort   endswitht   digest_footert	   postambleR   t   VIRGINQUEUE_DIRt   getDigestMemberKeyst   one_last_digestt   getMemberCPAddressest   getDeliveryStatusR   t   getMemberOptiont   DisableMimet   cleart   enqueuet   internal_namet   set_payload(4   R:   R?   R@   t   langR    t	   lcset_outt   realnameRq   t   issuet   digestidt
   digestsubjt   mimemsgt   plainmsgt
   rfc1153msgt   separator70t   separator30t   mastheadtxtt   mastheadt	   headertxtt   headert   toct   messagest   msgcountR;   t   msgsubjRg   t   mot   usernamet	   addressest   wrappedt   slinest   firstt   linet   keepert   all_keeperst   keept   fieldt   toctextt   tocpartt
   mimedigestt   ht   uht   payloadt   mcsett	   footertxtt   footert   signofft   virginqt   plainrecipst
   mimerecipst   drecipst   user(    (    s8   /export/web/mailman/mailman/Mailman/Handlers/ToDigest.pyRP   £   sh   				


	


	


	
'' 		

	

)



	
!(9   t   __doc__R(   R{   R   RF   R6   t   typesR    t	   cStringIOR   t   email.ParserR   t   email.GeneratorR   t   email.MIMEBaseR   t   email.MIMETextR   t   email.MIMEMessageR   t   email.UtilsR   R   t   email.HeaderR	   R
   R   t   email.CharsetR   t   MailmanR   R   R   R   R   t   Mailman.MailboxR   t   Mailman.MemberAdaptorR   t   Mailman.Handlers.DecorateR   t   Mailman.Queue.sbcacheR   t   Mailman.Handlers.ScrubberR   R’   t   Mailman.Logging.SyslogR   Rs   t   UEMPTYSTRINGt   EMPTYSTRINGRI   RE   t	   NameErrorR"   R3   RP   (    (    (    s8   /export/web/mailman/mailman/Mailman/Handlers/ToDigest.pyt   <module>   sN   
	
	
	)	)