ó
@ü½cc           @   sQ  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 Z d d l Z d d l m	 Z	 d d l
 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 Td d l m Z d d l m Z d Z  d Z! e j" Z" e j# e j$ ƒ d Z% d Z& e j' Z' e j( Z( e j) Z) e j* e( e) f k r·e j* a+ n e' a+ e j, e j- e j. f Z/ e' d „ Z0 d d „ Z1 d „  Z2 d d „ Z3 d „  Z4 d „  Z5 e' d „ Z6 d „  Z7 d „  Z8 d  „  Z9 d! „  Z: d" „  Z; d S(#   s:   Produce and process the pending-approval items for a list.iÿÿÿÿN(   t   ListType(   t
   quote_plust   unquote_plus(   t   mm_cfg(   t   Utils(   t   MailList(   t   Errors(   t   Message(   t   i18n(   t   ModeratedMemberPost(   t   HELDMSG(   t   readMessage(   t   Auth(   t   *(   t   syslog(   t
   csrf_checkt    s   
i
   iL   c         C   s  |  j  ƒ  } i  } x€ | D]x } |  j | ƒ d } |  j | ƒ d } | t t f k rf d | f } n | | f } | j | g  ƒ j | | f ƒ q Wx{ | j ƒ  D]m \ } }	 t |	 ƒ d k r× |	 j ƒ  |	 | | <n  | t k r¢ |	 d d | d f }
 | | =|	 | |
 <q¢ q¢ W| S(   Ni    i   (	   t   GetHeldMessageIdst	   GetRecordt   SSENDERt   SSENDERTIMEt
   setdefaultt   appendt   itemst   lent   sort(   t   mlistt   ssortt   heldmsgst   byskeyt   idt   ptimet   sendert   skeyt   kt   vt   newkey(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyt   helds_by_skeyC   s$    #
i   c         C   s¤   d | } t  d d d d ƒ } | j g  | D] } | | | ^ q, ƒ | j g  t | | | ƒ D]9 \ } }	 }
 t t |  |	 |
 ƒ j ƒ  d | d ƒ ^ q` ƒ | S(   Ns   &nbsp;t   cellspacingt   5t   cellpaddingt   0s   <div class=hidden>s   </div>(   t   Tablet   AddRowt   zipt   Centert   RadioButtont   Format(   t   btnnamet   labelst   valuest   defaultst   spacingt   spacet   btnst   textt   labelt   valuet   default(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyt   hacky_radio_buttons[   s    
(	Pc          C   s×	  t  j ƒ  }  |  s t ƒ  d  S|  d j ƒ  } y t j | d d ƒ} WnN t j k
 r– } t  j | ƒ } d GHt t d ƒ ƒ t	 d d | | ƒ d  SXt
 j | j ƒ t j d d ƒ } y | j d	 d
 ƒ Wnp t k
 r?t ƒ  } | j t j ƒ | j t d t d ƒ ƒ ƒ | j t t d ƒ ƒ ƒ d GH| j ƒ  GHd  SXd	 d d d d g } | j ƒ  } t | ƒ t | ƒ r•t | | j d ƒ d ƒ }	 n t }	 | j d	 ƒ rÀd
 t j d <t }	 n  | j t j t j  t j! f | j d	 d
 ƒ ƒ s‰| j" d	 ƒ rit t# d t d ƒ ƒ ƒ j ƒ  }
 t j j$ d t j j$ d t j j$ d d ƒ ƒ ƒ } t	 d d | | ƒ n d
 }
 t% j& | d d |
 ƒd  St' |  ƒ d k r0|  d d k r0| j( t j! ƒ d d  k rÛ| j) t j! ƒ GHn  | j( t j  ƒ d r| j) t j  ƒ GHn  | j) t j ƒ GHt% j& | d d! d ƒd  St ƒ  } | j | j ƒ d  } d  } d  } t j j$ d" ƒ } | r-t j+ | ƒ j$ d ƒ } | r°t, | ƒ t- k r°| d } n  t j+ | ƒ j$ d ƒ } | rít, | ƒ t- k rí| d } n  t j+ | ƒ j$ d ƒ } | r-t, | ƒ t- k r-| d } q-n  | d# „ } | j. ƒ  z‚t/ j/ t/ j0 | ƒ | j1 } | j ƒ  s~| j" d ƒ r”| j2 t d$ ƒ ƒ nH | sÜ| j2 t d% ƒ ƒ |	 rÆt3 | | | ƒ qÜ| j4 t d& ƒ ƒ n  | j5 d d' d ƒ} | j6 ƒ  sÒt d$ ƒ } | j2 | ƒ | j t d | ƒ ƒ | j t d( ƒ ƒ | j d) ƒ | j t7 | t d* ƒ ƒ ƒ | j d+ ƒ | j t7 d, | d- t d. ƒ ƒ ƒ | j d/ ƒ | j | j8 ƒ  ƒ | j ƒ  GH| j9 ƒ  d  St: | d0 | d1 t; ƒ} | d2 k r| j t d t d3 ƒ ƒ ƒ n' | j t d t d4 ƒ d5 | j1 ƒ ƒ | d2 k rm| j t< t= d6 t d7 ƒ ƒ ƒ ƒ n  | j> ƒ  } | p| p| p| sÍ| j t< d8 t? d9 d ƒ j ƒ  d: t d; ƒ d< ƒ ƒ n  | j5 d= d' d ƒ} i | j1 d> 6| d? d@ 6| dA 6| dB dC 6| dD 6| dE dF 6} d } | r„t  j | ƒ } t dG ƒ | dH <| j t  j@ dI | dJ d d0 | ƒƒ tA | | | ƒ nB| rÒt dK ƒ | dH <| j t  j@ dI | dJ d d0 | ƒƒ tB | | | ƒ nô | dL k r#t dM ƒ | dH <| j t  j@ dI | dJ d d0 | ƒƒ tC | | ƒ n£ | d2 k r]| j t  j@ dN | dJ d d0 | ƒƒ d } ni | j t  j@ dO | dJ d d0 | ƒƒ tD | | ƒ } | tE | | ƒ 7} | tF | | tG ƒ 7} | d k } | r^	| j | ƒ | j dP ƒ | pû| pû| pû| s9	| j t< d8 t? d9 d ƒ j ƒ  d: t d; ƒ d< ƒ ƒ n  | j t< t= d6 t d7 ƒ ƒ ƒ ƒ n  | j d+ ƒ | j t7 d, | d- t d. ƒ ƒ ƒ | j d/ ƒ | j | j8 ƒ  ƒ | j ƒ  GH| j9 ƒ  Wd  | jH ƒ  Xd  S(Q   Ni    t   locks   Status: 404 Not Founds&   No such list <em>%(safelistname)s</em>t   errors   admindb: No such list "%s": %s
t   keep_blank_valuesi   t   adminpwR   i   t   Errors   Invalid options to CGI script.s   Status: 400 Bad Requestt   admlogint   msgidR    t   detailst
   csrf_tokent   admindbt   HTTP_COOKIEs   +1s   Authorization failed.t   HTTP_FORWARDED_FORt   HTTP_X_FORWARDED_FORt   REMOTE_ADDRs   unidentified origint   securitys2   Authorization failed (admindb): list=%s: remote=%st   msgt   logoutt   sitet	   frontpaget   QUERY_STRINGc         S   s   | j  ƒ  t j d ƒ d  S(   Ni    (   t   Unlockt   syst   exit(   t   signumt   frameR   (    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyt   sigterm_handlerÛ   s    
s$   %(realname)s Administrative Databases,   %(realname)s Administrative Database Resultss6   The form lifetime has expired. (request forgery check)t   absolutes   There are no pending requests.t    s   Click here to reload this page.s$   
<div align="right"><font size="+2">s	   %s/logouts	   <b>%s</b>t   Logouts   </font></div>
R   t   contextst   instructionss5   Detailed instructions for the administrative databases)   Administrative requests for mailing list:s    <em>%s</em>t   submits   Submit All Datas   <label>t   discardalldefersps   &nbsp;s*   Discard all messages marked <em>Defer</em>s   </label>t   admint   listnames   ?details=instructionst
   detailsurlt
   summaryurls   ?details=allt
   viewallurlt   adminurls   /privacy/sendert	   filterurls#   all of %(esender)s's held messages.t   descriptions   admindbpreamble.htmlt   raws   a single held message.t   alls   all held messages.s   admindbdetails.htmls   admindbsummary.htmls   <hr>(I   R   t   GetPathPiecest   handle_no_listt   lowerR   R   t   MMListErrort   websafet   _R   R   t   set_languaget   preferred_languaget   cgit   FieldStoraget   getfirstt	   TypeErrort   DocumentR   t   DEFAULT_SERVER_LANGUAGEt   AddItemt   Headert   BoldR/   t   keyst   setR   t   Truet   ost   environt   WebAuthenticatet   AuthListAdmint   AuthListModeratort   AuthSiteAdmint   has_keyt   FontSizet   getR   t	   loginpageR   t   AuthContextInfot	   ZapCookiet   Nonet   parse_qst   typeR    t   Lockt   signalt   SIGTERMt	   real_namet   SetTitlet   process_formt   addErrort   GetScriptURLt   NumRequestsPendingt   Linkt   GetMailmanFootert   Savet   Formt   AUTH_CONTEXTSR-   t   SubmitButtonR   t   CheckBoxt   maketextt   show_sender_requestst   show_message_requestst   show_detailed_requestst   show_pending_subst   show_pending_unsubst   show_helds_overviewR   RP   (   t   partsR^   R   t   et   safelistnamet   cgidatat   doct   safe_paramst   paramst   csrf_checkedRK   t   remoteR    RB   RC   t   envart   qsRU   t   realnamet
   admindburlt   titlet   formt
   nomessagesRb   t   dt   addformt   esendert   num(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyt   maini   sR   			!"	

	
			%	$		$%c         C   sÄ   t  ƒ  } | j t j ƒ t d ƒ } | j | ƒ | j t d | ƒ ƒ | j |  ƒ t j	 d d d ƒ} t
 | t d ƒ ƒ j ƒ  } | j t d ƒ ƒ | j d ƒ | j t ƒ  ƒ | j ƒ  GHd  S(	   Ns%   Mailman Administrative Database Errori   R]   RV   i   s    list of available mailing lists.s3   You must specify a list name.  Here is the %(link)ss   <hr>(   Rs   Rm   R   Rt   Rl   RŽ   Ru   Rv   R   t	   ScriptURLR“   R/   t   MailmanLogo(   RK   R¥   t   headert   urlt   link(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyRh   `  s    	c      	   C   s§  |  j  ƒ  } | s d S| j d ƒ | j t t d t d ƒ ƒ ƒ ƒ t d d ƒ } | j t t t d ƒ ƒ ƒ t t t d ƒ ƒ ƒ t t t d ƒ ƒ ƒ g ƒ i  } x: | D]2 } |  j | ƒ d	 } | j	 | g  ƒ j
 | ƒ q­ W| j ƒ  } | j ƒ  d } x…| D]}\ } }	 x% |	 d
  D] } |  j | t j ƒ qW|	 d
 } |  j | ƒ \ }
 } } } } } t j | |  j ƒ } t j |
 ƒ } t | t d ƒ t d ƒ t d ƒ t d ƒ f d t j t j t j t j f d d ƒj ƒ  } | |  j k r+| d t d | d	 ƒ j ƒ  d t d ƒ d 7} n  | j d d ƒ } | j d | t j | ƒ | f | t d | d d ƒg ƒ | d	 7} qW| d k r£| j | ƒ n  | S(   Ni    s   <hr>i   s   Subscription Requestst   borders   Address/name/times   Your decisions   Reason for refusali   iÿÿÿÿt   Defert   Approvet   Rejectt   DiscardR2   t   checkeds   <br>s   <label>s   ban-%ds   &nbsp;s   Permanently ban from this lists   </label>s   us-asciit   replaces   %s<br><em>%s</em><br>%ss
   comment-%dt   sizei(   s   <br><label>(   t   GetSubscriptionIdsRu   R-   Rv   Rl   R*   R+   Rw   R   R   R   R   R   t   HandleRequestR   t   DISCARDR   t
   uncanonstrRn   t   timet   ctimet   RadioButtonArrayt   DEFERt	   SUBSCRIBEt   REJECTR/   t   ban_listR™   t   encodeRk   t   TextBox(   R   R¯   t   pendingsubst   tablet   byaddrsR   t   addrt   addrsR´   t   idst   stimet   fullnamet   passwdt   digestt   langt   displaytimet   radiot   paddr(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyRž   r  s\    "

!		(c         C   s\  |  j  } |  j ƒ  } | s d St d d ƒ } | j t t t d ƒ ƒ ƒ t t t d ƒ ƒ ƒ t t t d ƒ ƒ ƒ g ƒ i  } x6 | D]. } |  j | ƒ } | j | g  ƒ j	 | ƒ q‡ W| j
 ƒ  } | j ƒ  d }	 x5| D]-\ } }
 x% |
 d D] } |  j | t j ƒ qó W|
 d } |  j | ƒ } y t j |  j | ƒ | ƒ } Wn* t j k
 rt|  j | t j ƒ qÜ n X|	 d 7}	 | j d | t j | ƒ f t | t d	 ƒ t d
 ƒ t d ƒ t d ƒ f d t j t j t j t j f d d ƒt d | d d ƒg ƒ qÜ W|	 d k rX| j d ƒ | j t t d t d ƒ ƒ ƒ ƒ | j | ƒ n  |	 S(   Ni    R»   i   s   User address/names   Your decisions   Reason for refusali   s   %s<br><em>%s</em>R¼   R½   R¾   R¿   R2   RÀ   s
   comment-%dRÂ   i-   s   <hr>s   Unsubscription Requests(   Rn   t   GetUnsubscriptionIdsR*   R+   R-   Rw   Rl   R   R   R   R   R   RÄ   R   RÅ   R   RÆ   t   getMemberNameR   t   NotAMemberErrorRk   RÉ   RÊ   t   UNSUBSCRIBERÌ   RÏ   Ru   Rv   (   R   R¯   RÚ   t   pendingunsubsRÑ   RÒ   R   RÓ   RÔ   R´   RÕ   R×   (    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyRŸ   ¬  sT    	


		"c      
   C   s	  t  |  | ƒ } | s d S| j d ƒ | j t t d t d ƒ ƒ ƒ ƒ t j rÎ | j t t d ƒ ƒ ƒ | j t t d t d ƒ t d ƒ t d	 ƒ f t t	 t
 f | t k | t	 k | t
 k f ƒ ƒ ƒ n  |  j d
 d d ƒ} t d d ƒ } | j | ƒ | j ƒ  } | j ƒ  xí| D]å} | d } t | ƒ }	 t j | ƒ }
 | d |	 } t d d ƒ } | j t t t d ƒ ƒ j ƒ  |
 ƒ g ƒ | j | j ƒ  d d d ƒt d d ƒ } | j t d ƒ g ƒ | j | j ƒ  d d d ƒt d |	 t d ƒ t d ƒ t d ƒ t d ƒ f t j t j t j t j f d8 ƒ } | j | g ƒ | j | j ƒ  d d d ƒ| j d t d |	 d ƒ j ƒ  d t d ƒ d g ƒ | j | j ƒ  d d d ƒ| j d t d |	 d ƒ j ƒ  d t d ƒ d g ƒ | j | j ƒ  d d d ƒ| j t d |	 d |  j ƒ  ƒg ƒ | j | j ƒ  d d d ƒ|  j | ƒ rï|  j | t j  ƒ rº| j d t d  |	 d ƒ j ƒ  d t d! ƒ d g ƒ n | j t d" ƒ g ƒ | j | j ƒ  d d d ƒnd| |  j! |  j" |  j# |  j$ k rS| j d t d# |	 d ƒ j ƒ  d t d$ ƒ d g ƒ | j | j ƒ  d d d ƒt d% |	 t d& ƒ t d' ƒ t d( ƒ t d) ƒ f t j% t j& t j t j f d9 ƒ } | j | g ƒ | j | j ƒ  d d d ƒ| |  j' k rS| j d t d* |	 d ƒ j ƒ  d t d+ ƒ d g ƒ | j | j ƒ  d d d ƒqSn  t d d ƒ } | j t d, ƒ t( | t d- ƒ ƒ j ƒ  g ƒ | j | j ƒ  d d d ƒ| j d d g ƒ d } x| | D]	\ } } |  j) | ƒ } | \ } } } } } } y( t* j+ j, t* j+ j- t j. | ƒ ƒ } WnA t/ k
 ro} | j0 t0 j1 k rV‚  n  |  j2 | t j ƒ qÑn Xt j3 | t j4 |  j5 ƒ ƒ } t d d ƒ } | j t( | d. | d/ | ƒ t t d0 ƒ ƒ t j | ƒ g ƒ | j d t t d1 ƒ ƒ t6 | ƒ t d2 ƒ g ƒ | r$t | ƒ } n t d3 ƒ } | j d t t d4 ƒ ƒ | g ƒ | j7 d5 ƒ } | r•| j d t t d6 ƒ ƒ t8 j9 | ƒ g ƒ n  | j t: |	 d7 t6 | ƒ t; ƒ j ƒ  g ƒ | d 7} | j | g ƒ qÑW| j | | g ƒ | j | g ƒ qWd S(:   Ni    s   <hr>i   s   Held Messagess    Show this list grouped/sorted byt   summary_sorts   sender/senders   sender/times   ungrouped/timeRE   RV   i   R»   s   ?sender=s   From:t   colspans*   Action to take on all these held messages:s   senderaction-R¼   t   AcceptR¾   R¿   s   <label>s   senderpreserve-s   &nbsp;s,   Preserve messages for the site administrators   </label>s   senderforward-s#   Forward messages (individually) to:s   senderforwardto-R9   s   senderclearmodp-s*   Clear this member's <em>moderate</em> flags0   <em>The sender is now a member of this list</em>s   senderfilterp-s6   Add <b>%(esender)s</b> to one of these sender filters:s   senderfilter-t   Acceptst   Holdst   Rejectst   Discardss   senderbanp-sU   Ban <b>%(esender)s</b> from ever subscribing to this
                    mailing listsS   Click on the message number to view the individual
            message, or you can s"   view all messages from %(esender)ss	   ?msgid=%ds   [%d]s   Subject:s   Size:s    bytess   not availables   Reason:t   received_times	   Received:t   hidden(   i   i    i    i    (   i    i    i    i   (<   R%   Ru   R-   Rv   Rl   R   t!   DISPLAY_HELD_SUMMARY_SORT_BUTTONSR;   R   R   t   STIMER‘   R*   Rx   R   R   R   Rk   R+   Rw   R/   t   AddCellInfot   GetCurrentRowIndexRÊ   t   APPROVERÌ   RÅ   R™   RÏ   t   GetOwnerEmailt   isMembert   getMemberOptiont   Moderatet   accept_these_nonmemberst   hold_these_nonmemberst   reject_these_nonmemberst   discard_these_nonmemberst   ACCEPTt   HOLDRÍ   R“   R   R{   t   patht   getsizet   joint   DATA_DIRt   OSErrort   errnot   ENOENTRÄ   t   onelinet
   GetCharSetRn   t   strRƒ   RÇ   RÈ   t   InputObjt   False(   R   R¯   R   R   R­   RÑ   t   skeysR!   R    t   qsenderR³   t	   senderurlt   stablet   leftR6   t   rightt   counterR   R   t   infot   subjectt   reasont   filenamet   msgdataRÂ   R¢   t   dispsubjt   tt   when(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyR    â  sà    "	+

,'	(((('	3" ( 2"+
c   
      C   s´   t  |  t ƒ } | s d  S| j d | f ƒ } | d  k r> d  Sg  | D] } | d ^ qE } t | ƒ } d } x@ | D]8 } |  j | ƒ }	 t |  | |	 | | | ƒ | d 7} qt Wd  S(   Ni    i   (   R%   R   Rƒ   R‡   R   R   t   show_post_requests(
   R   R¯   R    R   t
   sender_idst   xt   totalt   countR   R  (    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyR›   }  s    c         C   sW   y t  | ƒ } |  j | ƒ } Wn t t f k
 r9 d  SXt |  | | d d | ƒ d  S(   Ni   (   t   intR   t
   ValueErrort   KeyErrorR  (   R   R¯   R   R  (    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyRœ     s    c         C   sk   |  j  ƒ  } t | ƒ } d } xF |  j  ƒ  D]8 } |  j | ƒ } t |  | | | | | ƒ | d 7} q+ Wd  S(   Ni   (   R   R   R   R  (   R   R¯   Rf   R  R  R   R  (    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyR   š  s    c         C   s	  | \ } } } }	 }
 } | j  d ƒ t d ƒ } | d k rP | t d ƒ 7} n  | j  t t d | ƒ ƒ ƒ y" t t j j t j	 |
 ƒ ƒ } Wnß t
 k
 r
} | j t j k r¸ ‚  n  | j  t d ƒ ƒ | j  d ƒ y |  j | t j ƒ Wn t j k
 rn Xd  St j j k
 ro| j  t d ƒ ƒ | j  d ƒ y |  j | t j ƒ Wn t j k
 rjn Xd  SXg  } d	 } t j } x] t j j | d
 t ƒD]C } | j | ƒ | t | ƒ 7} | | k oØd	 k n ržPqžqžWt j | ƒ } xB | j ƒ  D]. } | j ƒ  d k r| j ƒ  p(d } PqqWd } t j |  j ƒ } | | k r™y" t  | | d ƒ j! | d ƒ } Wq™t" t# t$ f k
 r•q™Xn  t% j g  | j& ƒ  D] \ } } d | | f ^ q¬ƒ } t j' | ƒ } t( d d	 d d	 d d ƒ } | j) t* t d ƒ ƒ | g ƒ | j+ ƒ  | j, ƒ  } } | j- | | d d d ƒ| j) t* t d ƒ ƒ t j' t j. | | ƒ ƒ g ƒ | j- | d | d d d ƒ| j) t* t d ƒ ƒ t |	 ƒ g ƒ | j- | d | d d d ƒ| j/ d ƒ } | r@| j) t* t d ƒ ƒ t0 j1 | ƒ g ƒ | j- | d | d d d ƒn  t2 | t d ƒ t d ƒ t d ƒ t d ƒ f t j3 t j4 t j5 t j f d< d d  ƒ} | j) t* t d! ƒ ƒ | g ƒ | j- | j+ ƒ  | d d d ƒ| j) d" d# t6 d$ | d% d	 ƒ j7 ƒ  d" t d& ƒ d' g ƒ | j) d" d# t6 d( | d% d	 ƒ j7 ƒ  d" t d) ƒ d' t8 d* | d+ d, d- |  j9 ƒ  ƒj7 ƒ  g ƒ | j/ d. t d/ ƒ ƒ } | j) t* t d0 ƒ ƒ t: d1 | d2 d3 d4 t; d t j< t | ƒ d5 d6 ƒƒg ƒ | j+ ƒ  | j, ƒ  } } | j- | | d d d ƒ| j) t* t d7 ƒ ƒ t: d8 | | d2 t= d4 t; d9 d ƒg ƒ | j+ ƒ  | j, ƒ  } } | j- | | d d d ƒ| j) t* t d: ƒ ƒ t: d; | t j' | ƒ d2 t= d4 t; d9 d ƒg ƒ | j- | d | d d d ƒ| j  | ƒ | j  d ƒ d  S(=   Ns   <hr>s   Posting Held for Approvali   s    (%(count)d of %(total)d)i   s%   <em>Message with id #%(id)d was lost.s   <p>s)   <em>Message with id #%(id)d is corrupted.i    t   decodeR7   s   us-asciiRÁ   s   %s: %sR&   R(   t   widths   100%s   From:t   alignR  s   Subject:s   Reason:Rê   s	   Received:i   R¼   R½   R¾   R¿   R4   i   s   Action:s   &nbsp;s   <label>s   preserve-%dt   ons'   Preserve message for site administrators   </label>s
   forward-%ds'   Additionally, forward this message to: s   forward-addr-%dRÂ   i/   R9   t   rejection_notices   [No explanation given]s6   If you reject this post,<br>please explain (optional):s
   comment-%dt   rowsi   t   colst   columniP   s   Message Headers:s
   headers-%dt   readonlys   Message Excerpt:s   fulltext-%d(   i   i    i    i    (>   Ru   Rl   R-   Rv   R   R{   Rû   Rý   R   Rþ   t   IOErrorR   R  RÄ   RÅ   R   t   LostHeldMessaget   emailt   MessageParseErrort   ADMINDB_PAGE_TEXT_LIMITt	   Iteratorst   body_line_iteratorRz   R   R   t   EMPTYSTRINGt   walkt   get_content_maintypet   get_content_charsetR   R  Rn   t   unicodeRÎ   t   LookupErrort   UnicodeErrorR  t   NLR   Rk   R*   R+   Rw   Rï   t   GetCurrentCellIndexRî   R  Rƒ   RÇ   RÈ   R;   RÊ   Rð   RÌ   R™   R/   RÏ   Rñ   t   TextAreat   EXCERPT_WIDTHt   wrapt   EXCERPT_HEIGHT(   R   R   R  R  R  R¯   R   R    R  R  R  R  RK   R¢   t   linest   charst   limitt   linet   bodyt   partt   mcsett   lcsetR"   R#   t   hdrtxtR  t   rowt   colR  t   buttonst   notice(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyR  ¥  sº    "	"8%(!'	 	+	/"c   #   
   C   s.  i  } g  } xÉ | j  ƒ  D]» } x² d' D]ª } | j | ƒ r& | t | ƒ d	  } | t | ƒ } t | ƒ }	 | j | ƒ }
 |
 | j |	 i  ƒ | <x= | j | ƒ D]) } | |	 j d
 g  ƒ j t | ƒ ƒ q  Wq& q& Wq Wy | j d d ƒ } Wn t	 k
 rd } n Xt | j d t
 ƒ ƒ a xL| j  ƒ  D]>}	 | |	 } y t | j d t j ƒ ƒ } Wn t	 k
 rxt j } n X| t j k rš| ršt j } n  | t j t j t j t j f k r´| j d d ƒ } | j d d ƒ } | j d d ƒ } t |  t
 ƒ } x® | j d |	 f g  ƒ D]‘ \ } } | | |	 d
 k rBqn  yK |  j | ƒ d } | j d t d ƒ ƒ } |  j | | | | | | ƒ Wqt t j f k
 r¬qqXqWn  | j d d ƒ r¹y t j |	 ƒ Wn! t j k
 rú| j |	 ƒ q¹Xy t | j d ƒ ƒ } Wn t	 k
 r-d } n X| t j k rP|  j j |	 ƒ q¹| t j k rr|  j j |	 ƒ q¹| t j k r”|  j  j |	 ƒ q¹| t j k r¹|  j! j |	 ƒ q¹n  | j d d ƒ rÿy |  j" |	 t j# d ƒ Wqÿt j$ k
 rûqÿXn  | j d d ƒ r-y t j |	 ƒ Wn! t j k
 rE| j |	 ƒ qkX|	 |  j% k rk|  j% j |	 ƒ qkq-q-Wg  } g  } x¼| j  ƒ  D]®} | | } t& | ƒ t' k r°qˆn  y t | j( ƒ } t | ƒ } Wn t	 k
 råqˆn X| t j t j t j t j t j) t j* t j t j f k r(qˆn  d | } d | } d | } d | } d | } yS |  j+ | ƒ t, k r |  j | ƒ d } | j d t d ƒ ƒ } n t d ƒ } Wn t k
 rÃqˆn Xd } d } d } | j- | ƒ rõ| | j( } n  | j- | ƒ r| | j( } n  | j- | ƒ r3| | j( } n  | j- | ƒ rR| | j( } n  | j | ƒ r™|  j | ƒ d	 }	 |	 |  j% k r™|  j% j |	 ƒ q™n  y  |  j | | | | | | ƒ Wqˆt t j f k
 rØqˆqˆt j. k
 rú} | j | ƒ qˆt j/ k
 r5}  |  j | ƒ d	 }	 | j |	 |  f ƒ qˆXqˆW| j0 t1 d  t d! ƒ ƒ ƒ | r›x< | D]1 }! t j2 |! ƒ }! | j0 |! t d" ƒ d# ƒ qcWn  | ráx= | D]2 \ }! }" t j2 |! ƒ }! | j0 t d$ ƒ d# ƒ q¨Wn  | r*x@ | D]5 }! t j2 |! ƒ }! | j0 |! d% t d& ƒ d# ƒ qîWn  d  S((   Ns   senderaction-s   senderpreserve-s   senderforward-s   senderforwardto-s   senderfilterp-s   senderfilter-s   senderclearmodp-s   senderbanp-i   t   message_idsR\   i    Rã   t   senderactiont   senderpreservet   senderforwardt   senderforwardtoR   i   R"  s   [No explanation given]t   senderfilterpt   senderfiltert   ignoret   senderclearmodpt
   senderbanps
   comment-%ds   preserve-%ds
   forward-%ds   forward-addr-%ds   ban-%di   s   Database Updated...s    is already a members   <br>s&   %(addr)s is banned (matched: %(patt)s)s   : s   Bad/Invalid email address(   s   senderaction-s   senderpreserve-s   senderforward-s   senderforwardto-s   senderfilterp-s   senderfilter-s   senderclearmodp-s   senderbanp-(3   Rx   t
   startswithR   R   Rq   R   t   getlistR   R  R  R   R   Rƒ   R   RÊ   RÅ   Rð   RÌ   R%   R   Rl   RÄ   R  R   R(  R   t   ValidateEmailt   EmailAddressErrorRù   Rõ   Rú   Rö   R÷   Rø   t   setMemberOptionRô   Rà   RÍ   R‰   R    R9   RË   Rá   t   GetRecordTypeR
   R   t   MMAlreadyAMembert   MembershipIsBannedRu   Rv   Rk   (#   R   R¥   R¤   t   senderactionst   badaddrsR"   t   prefixt   actionR  R    R9   R   R\   t   actionst   preservet   forwardt   forwardaddrR   R   R  t   commentt   whicht   banaddrst
   erroraddrst   formvR#   t
   request_idt
   commentkeyt   preservekeyt
   forwardkeyt   forwardaddrkeyt   bankeyt   patternRÓ   t   patt(    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyR   #  s    
%

%	






	#(<   t   __doc__RQ   R{   Ro   R   R‹   R)  RÇ   t   typesR    t   urllibR   R   t   MailmanR   R   R   R   R   R   t   Mailman.Handlers.ModerateR	   t   Mailman.ListAdminR
   R   t   Mailman.CgiR   t   Mailman.htmlformatt   Mailman.Logging.SyslogR   t   Mailman.CSRFcheckR   R.  R5  Rl   Rm   Rt   R:  R8  R   R   Rí   Rì   R   R   R~   R€   R—   R%   R;   Rµ   Rh   Rž   RŸ   R    R›   Rœ   R   R  R   (    (    (    s2   /export/web/mailman/mailman/Mailman/Cgi/admindb.pyt   <module>   s`   
					÷	:	6›				~