Ñò
?]Mc        	   @   s‹   d  Z  d d k Z d d k l Z d d k l Z d d k l Z d d k l Z d d k l Z d Z	 d	 Z
 d
 e i 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.
iÿÿÿÿN(   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 i e i e i e i 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/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   __init__/   s    c         C   s    |  i  i i ƒ  |  i  i i ƒ  S(   N(   R   t   memberst   keyst   digest_members(   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt
   getMembers5   s    c         C   s   |  i  i i ƒ  S(   N(   R   R
   R   (   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getRegularMemberKeys8   s    c         C   s   |  i  i i ƒ  S(   N(   R   R   R   (   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getDigestMemberKeys;   s    c         C   s²   | i  ƒ  } g  } |  i i i | | ƒ } | | j	 o) t | t ƒ o | t f S| t f Sn |  i i i | | ƒ } | | j	 o) t | t ƒ o | 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/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   __get_cp_member>   s    c         C   s+   |  i  | ƒ \ } } | d  j	 o d Sd S(   Ni   i    (   t#   _OldStyleMemberships__get_cp_memberR   (   R   R   t   cpaddrt   where(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   isMemberO   s    c         C   s<   |  i  | ƒ \ } } | d  j o t i | ‚ n | i ƒ  S(   N(   R   R   R   t   NotAMemberErrorR   (   R   R   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberKeyU   s    c         C   s6   |  i  | ƒ \ } } | d  j o t i | ‚ n | S(   N(   R   R   R   R   (   R   R   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberCPAddress[   s    c         C   s,   g  } | D] } | |  i  | ƒ d q ~ S(   Ni    (   R   (   R   R
   t   _[1]R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberCPAddressesa   s    c         C   s<   |  i  i i | i ƒ  ƒ } | d  j o t i | ‚ n | S(   N(   R   t	   passwordsR   R   R   R   R   (   R   R   t   secret(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberPasswordd   s    c         C   s%   |  i  | ƒ } | | j o | Sd S(   Ni    (   R&   (   R   R   t   responseR%   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   authenticateMemberj   s    c         C   s$   |  i  | ƒ p t i | ‚ n d  S(   N(   R   R   R   (   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   __assertIsMemberp   s    c         C   sI   |  i  i i | i ƒ  |  i  i ƒ } | |  i  i ƒ  j o | S|  i  i S(   N(   R   t   languageR   R   t   preferred_languaget   GetAvailableLanguages(   R   R   t   lang(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberLanguaget   s
    c         C   se   |  i  | ƒ | t i j o  |  i | ƒ \ } } | t j S|  i i i | i ƒ  d ƒ } | | @S(   Ni    (	   t$   _OldStyleMemberships__assertIsMemberR   t   DigestsR   R   R   t   user_optionsR   R   (   R   R   t   flagR   R   t   option(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberOption{   s    c         C   s&   |  i  | ƒ |  i i i | i ƒ  ƒ S(   N(   R/   R   t	   usernamesR   R   (   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberNameƒ   s    c         C   s)   |  i  | ƒ |  i i i | i ƒ  g  ƒ S(   N(   R/   R   t   topics_userinterestR   R   (   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getMemberTopics‡   s    c         C   s6   |  i  | ƒ |  i i i | i ƒ  t i d f ƒ d S(   Ni    (   R/   R   t   delivery_statusR   R   R   t   ENABLED(   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getDeliveryStatus‹   s    	c         C   s6   |  i  | ƒ |  i i i | i ƒ  t i d f ƒ d S(   Ni    i   (   R/   R   R9   R   R   R   R:   (   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getDeliveryStatusChangeTime“   s    	c         C   s?   g  } |  i  ƒ  D]' } |  i | ƒ | j o | | q q ~ S(   N(   R   R;   (   R   t   statusR"   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getDeliveryStatusMembers›   s    c         C   s1   g  } |  i  i i ƒ  D] } | | i ƒ  q ~ S(   N(   R   t   bounce_infoR   R   (   R   R"   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getBouncingMembers¢   s    c         C   s&   |  i  | ƒ |  i i i | i ƒ  ƒ S(   N(   R/   R   R?   R   R   (   R   R   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   getBounceInfo¥   s    c         K   sÒ  |  i  i ƒ  p t ‚ |  i | ƒ o t i | ‚ n d } t i ƒ  } |  i  i } d  } | i
 d ƒ o | d } | d =n | i
 d ƒ o | d } | d =n | i
 d ƒ o | d } | d =n | i
 d ƒ o | d } | d =n | o t | i ƒ  ‚ n t i | ƒ | i ƒ  j o
 d } n | } | i ƒ  } | o | |  i  i | <n | |  i  i | <|  i | | ƒ |  i | | ƒ | o |  i | | ƒ n |  i  i o |  i  i |  i  i | <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_optionsR1   (   R   R   t   kwsRB   RC   R*   RD   t   value(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   addNewMember¬   sD    




c      	   C   sr   |  i  i ƒ  p t ‚ |  i | ƒ | i ƒ  } x; d
 D]3 } t |  i  | ƒ } | i | ƒ o | | =q7 q7 Wd  S(   NR$   R1   R
   R   R*   R7   R5   R?   R9   (	   s	   passwordss   user_optionss   memberss   digest_memberss   languages   topics_userinterests	   usernamess   bounce_infos   delivery_status(   R   RE   RF   R/   R   t   getattrRI   (   R   R   t	   memberkeyt   attrt   dict(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   removeMemberÛ   s      i    c      
   C   sa  |  i  i ƒ  p t ‚ |  i | ƒ | i ƒ  } |  i | ƒ } |  i  i i | d ƒ } |  i | t	 i
 ƒ } |  i  i i | t i ƒ  ƒ } |  i | ƒ }	 |  i  i i | i ƒ  t i d f ƒ }
 | p |  i | ƒ n |  i | d | d | d | d |	 ƒ| o | |  i  i | i ƒ  <n |
 d t i t i f j o" | o |
 |  i  i | i ƒ  <n d  S(   Ni    RD   RB   RC   R*   (   R   RE   RF   R/   R   R6   R1   R   R4   R   R0   R$   R   RH   R.   R9   R   R:   RW   RR   t   BYUSERt   BYADMIN(   R   R   t
   newaddresst   nodeleteRT   t   fullnamet   flagst   digestspRC   R-   t   delivery(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   changeMemberAddressê   s(    c         C   s>   |  i  i ƒ  p t ‚ |  i | ƒ | |  i  i | i ƒ  <d  S(   N(   R   RE   RF   R/   R$   R   (   R   RT   RC   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyRL     s    c         C   s>   |  i  i ƒ  p t ‚ |  i | ƒ | |  i  i | i ƒ  <d  S(   N(   R   RE   RF   R/   R*   R   (   R   RT   R*   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyRM     s    c         C   s  |  i  i ƒ  p t ‚ |  i | ƒ | i ƒ  } | t i j oe| oº |  i  i p t i	 ‚ n |  i  i
 i | ƒ o t i | ‚ n |  i  i i | ƒ } | d  j o t i | ‚ n |  i  i | =| |  i  i
 | <|  i  i i | ƒ o |  i  i | =q n  |  i  i p t i ‚ n |  i  i i | ƒ o t i | ‚ n |  i  i
 i | ƒ } | d  j o t i | ‚ n |  i  i
 | =| |  i  i | <| |  i  i | <d  S|  i  i i | d ƒ | o |  i  i | c | O<n |  i  i | c | M<|  i  i | p |  i  i | =n d  S(   Ni    (   R   RE   RF   R/   R   R   R0   t
   digestableR   t   CantDigestErrorR   RI   t   AlreadyReceivingDigestsR
   R   R   R   t   one_last_digestt   nondigestablet   MustDigestErrort!   AlreadyReceivingRegularDeliveriesR1   t
   setdefault(   R   R   R2   RQ   RT   t   cpuser(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   setMemberOption  sB    c         C   s>   |  i  i ƒ  p t ‚ |  i | ƒ | |  i  i | i ƒ  <d  S(   N(   R   RE   RF   R/   R5   R   (   R   R   RD   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyRN   L  s    c         C   sv   |  i  i ƒ  p t ‚ |  i | ƒ | i ƒ  } | o | |  i  i | <n( |  i  i i | ƒ o |  i  i | =n d  S(   N(   R   RE   RF   R/   R   R7   RI   (   R   R   t   topicsRT   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   setMemberTopicsQ  s    c         C   s¦   | t  i t  i t  i t  i t  i f j p t ‚ |  i i ƒ  p t ‚ |  i	 | ƒ | i
 ƒ  } | t  i j o |  i | d  ƒ n | t i ƒ  f |  i i | <d  S(   N(   R   R:   t   UNKNOWNRX   RY   t   BYBOUNCERF   R   RE   R/   R   t   setBounceInfoR   t   timeR9   (   R   R   R=   (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   setDeliveryStatus[  s    c         C   s£   |  i  i ƒ  p t ‚ |  i | ƒ | i ƒ  } | d  j oR |  i  i i | ƒ o |  i  i | =n |  i  i i | ƒ o |  i  i | =qŸ n | |  i  i | <d  S(   N(	   R   RE   RF   R/   R   R   R?   RI   R9   (   R   R   t   info(    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyRo   h  s    (&   t   __name__t
   __module__R	   R   R   R   R   R   R    R!   R#   R&   R(   R/   R.   R4   R6   R8   R;   R<   R   Rm   RX   RY   Rn   R>   R@   RA   RR   RW   R`   RL   RM   Rj   RN   Rl   Rq   Ro   (    (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyR   .   sD   																					/				:		
	(   t   __doc__Rp   t   typesR    t   MailmanR   R   R   R   R   R   R   (    (    (    s/   /usr/lib/mailman/Mailman/OldStyleMemberships.pyt   <module>   s   

