
:cc           @   s   d  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 Z	 d	 Z
 d
 e j f d     YZ d S(   s
  Old style Mailman membership adaptor.

This adaptor gets and sets member information on the MailList object given to
the constructor.  It also equates member keys and lower-cased email addresses,
i.e. KEY is LCE.

This is the adaptor used by default in Mailman 2.1.
iN(   t
   StringType(   t   mm_cfg(   t   Utils(   t   Errors(   t   MemberAdaptori   i   t   OldStyleMembershipsc           B   s=  e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e j e j e j e j f d  Z d   Z d   Z d   Z d   Z d d  Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% RS(    c         C   s   | |  _  d  S(   N(   t   _OldStyleMemberships__mlist(   t   selft   mlist(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   __init__/   s    c         C   s    |  j  j j   |  j  j j   S(   N(   R   t   memberst   keyst   digest_members(   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt
   getMembers5   s    c         C   s   |  j  j j   S(   N(   R   R
   R   (   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getRegularMemberKeys8   s    c         C   s   |  j  j j   S(   N(   R   R   R   (   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getDigestMemberKeys;   s    c         C   s   | j    } g  } |  j j j | |  } | | k	 r\ t | t  rO | t f S| t f Sn  |  j j j | |  } | | k	 r t | t  r | t f S| t f Sn  d S(   N(   NN(
   t   lowerR   R
   t   gett
   isinstanceR    t	   ISREGULARR   t   ISDIGESTt   None(   R   t   membert   lcmembert   missingt   val(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   __get_cp_member>   s    

c         C   s)   |  j  |  \ } } | d  k	 r% d Sd S(   Ni   i    (   t#   _OldStyleMemberships__get_cp_memberR   (   R   R   t   cpaddrt   where(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   isMemberO   s    c         C   s:   |  j  |  \ } } | d  k r0 t j |  n  | j   S(   N(   R   R   R   t   NotAMemberErrorR   (   R   R   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberKeyU   s    c         C   s4   |  j  |  \ } } | d  k r0 t j |  n  | S(   N(   R   R   R   R   (   R   R   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberCPAddress[   s    c         C   s$   g  | D] } |  j  |  d ^ q S(   Ni    (   R   (   R   R
   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberCPAddressesa   s    c         C   s:   |  j  j j | j    } | d  k r6 t j |  n  | S(   N(   R   t	   passwordsR   R   R   R   R   (   R   R   t   secret(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberPasswordd   s    c         C   s#   |  j  |  } | | k r | Sd S(   Ni    (   R%   (   R   R   t   responseR$   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   authenticateMemberj   s    c         C   s"   |  j  |  s t j |  n  d  S(   N(   R   R   R   (   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   __assertIsMemberp   s    c         C   sG   |  j  j j | j   |  j  j  } | |  j  j   k r= | S|  j  j S(   N(   R   t   languageR   R   t   preferred_languaget   GetAvailableLanguages(   R   R   t   lang(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberLanguaget   s
    c         C   sc   |  j  |  | t j k r; |  j |  \ } } | t k S|  j j j | j   d  } | | @S(   Ni    (	   t$   _OldStyleMemberships__assertIsMemberR   t   DigestsR   R   R   t   user_optionsR   R   (   R   R   t   flagR   R   t   option(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberOption{   s    
c         C   s&   |  j  |  |  j j j | j    S(   N(   R.   R   t	   usernamesR   R   (   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberName   s    c         C   s)   |  j  |  |  j j j | j   g   S(   N(   R.   R   t   topics_userinterestR   R   (   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getMemberTopics   s    c         C   s6   |  j  |  |  j j j | j   t j d f  d S(   Ni    (   R.   R   t   delivery_statusR   R   R   t   ENABLED(   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getDeliveryStatus   s    	c         C   s6   |  j  |  |  j j j | j   t j d f  d S(   Ni    i   (   R.   R   R8   R   R   R   R9   (   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getDeliveryStatusChangeTime   s    	c         C   s2   g  |  j    D]! } |  j |  | k r | ^ q S(   N(   R   R:   (   R   t   statusR   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getDeliveryStatusMembers   s    c         C   s)   g  |  j  j j   D] } | j   ^ q S(   N(   R   t   bounce_infoR   R   (   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getBouncingMembers   s    c         C   s&   |  j  |  |  j j j | j    S(   N(   R.   R   R>   R   R   (   R   R   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   getBounceInfo   s    c         K   s  |  j  j   s t  |  j |  r3 t j |  n  d } t j   } |  j  j } d  } | j
 d  rz | d } | d =n  | j
 d  r | d } | d =n  | j
 d  r | d } | d =n  | j
 d  r | d } | d =n  | r t | j    n  t j |  | j   k rd } n | } | j   } | rJ| |  j  j | <n | |  j  j | <|  j | |  |  j | |  | r|  j | |  n  |  j  j r|  j  j |  j  j | <n  d  S(   Ni    t   digestt   passwordR)   t   realname(   R   t   Lockedt   AssertionErrorR   R   t   MMAlreadyAMemberR   t   MakeRandomPasswordR*   R   t   has_keyt
   ValueErrorR   t   LCDomainR   R   R
   t   setMemberPasswordt   setMemberLanguaget   setMemberNamet   new_member_optionsR0   (   R   R   t   kwsRA   RB   R)   RC   t   value(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   addNewMember   sD    







	c      	   C   sn   |  j  j   s t  |  j |  | j   } x9 d
 D]1 } t |  j  |  } | j |  r5 | | =q5 q5 Wd  S(   NR#   R0   R
   R   R)   R6   R4   R>   R8   (	   R#   R0   R
   R   R)   R6   R4   R>   R8   (   R   RD   RE   R.   R   t   getattrRH   (   R   R   t	   memberkeyt   attrt   dict(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   removeMember   s     
i    c      
   C   sX  |  j  j   s t  |  j |  | j   } |  j |  } |  j  j j | d  } |  j | t	 j
  } |  j  j j | t j    } |  j |  }	 |  j  j j | j   t j d f  }
 | s |  j |  n  |  j | d | d | d | d |	 | r| |  j  j | j   <n  |
 d t j t j f k rT| rT|
 |  j  j | j   <n  d  S(   Ni    RC   RA   RB   R)   (   R   RD   RE   R.   R   R5   R0   R   R3   R   R/   R#   R   RG   R-   R8   R   R9   RV   RQ   t   BYUSERt   BYADMIN(   R   R   t
   newaddresst   nodeleteRS   t   fullnamet   flagst   digestspRB   R,   t   delivery(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   changeMemberAddress   s(    c         C   s<   |  j  j   s t  |  j |  | |  j  j | j   <d  S(   N(   R   RD   RE   R.   R#   R   (   R   RS   RB   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyRK     s    c         C   s<   |  j  j   s t  |  j |  | |  j  j | j   <d  S(   N(   R   RD   RE   R.   R)   R   (   R   RS   R)   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyRL     s    c         C   s  |  j  j   s t  |  j |  | j   } | t j k r| r |  j  j s[ t j	  n  |  j  j
 j |  r t j |  n  |  j  j j |  } | d  k r t j |  n  |  j  j | =| |  j  j
 | <|  j  j j |  r|  j  j | =qn |  j  j st j  n  |  j  j j |  r0t j |  n  |  j  j
 j |  } | d  k r`t j |  n  |  j  j
 | =| |  j  j | <| |  j  j | <d  S|  j  j j | d  | r|  j  j | c | O<n |  j  j | c | M<|  j  j | s|  j  j | =n  d  S(   Ni    (   R   RD   RE   R.   R   R   R/   t
   digestableR   t   CantDigestErrorR   RH   t   AlreadyReceivingDigestsR
   R   R   R   t   one_last_digestt   nondigestablet   MustDigestErrort!   AlreadyReceivingRegularDeliveriesR0   t
   setdefault(   R   R   R1   RP   RS   t   cpuser(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   setMemberOption  sB    c         C   s<   |  j  j   s t  |  j |  | |  j  j | j   <d  S(   N(   R   RD   RE   R.   R4   R   (   R   R   RC   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyRM   L  s    c         C   sp   |  j  j   s t  |  j |  | j   } | rG | |  j  j | <n% |  j  j j |  rl |  j  j | =n  d  S(   N(   R   RD   RE   R.   R   R6   RH   (   R   R   t   topicsRS   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   setMemberTopicsQ  s    c         C   s   | t  j t  j t  j t  j t  j f k s0 t  |  j j   sE t  |  j	 |  | j
   } | t  j k r |  j | d   n | t j   f |  j j | <d  S(   N(   R   R9   t   UNKNOWNRW   RX   t   BYBOUNCERE   R   RD   R.   R   t   setBounceInfoR   t   timeR8   (   R   R   R<   (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   setDeliveryStatus[  s    c         C   s   |  j  j   s t  |  j |  | j   } | d  k r |  j  j j |  r_ |  j  j | =n  |  j  j j |  r |  j  j | =q n | |  j  j | <d  S(   N(	   R   RD   RE   R.   R   R   R>   RH   R8   (   R   R   t   info(    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyRn   h  s    (&   t   __name__t
   __module__R	   R   R   R   R   R   R    R!   R"   R%   R'   R.   R-   R3   R5   R7   R:   R;   R   Rl   RW   RX   Rm   R=   R?   R@   RQ   RV   R_   RK   RL   Ri   RM   Rk   Rp   Rn   (    (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyR   .   sD   																					/				:		
	(   t   __doc__Ro   t   typesR    t   MailmanR   R   R   R   R   R   R   (    (    (    s:   /export/web/mailman/mailman/Mailman/OldStyleMemberships.pyt   <module>   s   
