m
֓Fc           @   si  d  Z  y d k l Z WnC e j
 o7 y d k Z Wq] e j
 o d k l Z q] Xn Xd k Z d k Z d k Z	 d k
 Z d k Z d k	 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 d Z d Z d Z  d Z! d Z" d e# f d     YZ$ d e$ f d     YZ% d e i& i' f d      YZ( d S(!   s!   tmatsuo@sios.com (Takashi MATSUO)(   s   cElementTreeN(   s   ElementTrees   2.0i   i  iL  iM  i  i  i  i  i  i  i  i  ix  iy  iz  i{  i|  i}  i~  i  i  t   2048t   Errorc           B   s   t  Z RS(   N(   t   __name__t
   __module__(    (    (    t1   /mit/freeculture/lib/python/gdata/apps/service.pyR   ;   s   t   AppsForYourDomainExceptionc           B   s   t  Z d   Z RS(   Nc         C   s   | |  _ ye t i | d  |  _ t |  i d i d  |  _ |  i d i d |  _	 |  i d i d |  _
 Wn t |  _ n Xd  S(   Nt   bodyi    t	   errorCodet   reasont   invalidInput(   t   responset   selft   argst   ElementTreet
   fromstringt   element_treet   intt   attribt
   error_codeR   R	   t   UNKOWN_ERROR(   R   R
   (    (    R   t   __init__@   s    	(   R   R   R   (    (    (    R   R   >   s   t   AppsServicec           B   s(  t  Z d  Z e e e e d e d  Z d   Z d   Z e d  Z d   Z d   Z	 d   Z
 d	   Z e d
  Z d   Z d   Z d   Z d   Z d   Z e d  Z d   Z d   Z d   Z d   Z d   Z d   Z d e e d  Z d   Z d   Z d   Z e d  Z d   Z RS(   s0   Client for the Google Apps Provisioning service.s   www.google.comc         C   sV   t  i i i |  d | d | d d d | d | d | t
 |  _ d |  _ | |  _ d  S(	   Nt   emailt   passwordt   servicet   appst   sourcet   servert   additional_headersi  (   t   gdataR   t   GDataServiceR   R   R   R   R   R   R   t   Truet   sslt   portt   domain(   R   R   R   R"   R   R   R   (    (    R   R   N   s    
		c         C   s   d |  i S(   Ns   /a/feeds/%s(   R   R"   (   R   (    (    R   t   _baseURLX   s    c         C   ss   | i   } x` | d j	 oR | t |  i | i    } x! | i
 D] } | i
 i |  qD W| i   } q W| S(   s'   retrieve all pages and add all elementsN(   t   link_findert   GetNextLinkt   nextt   Nonet   funct   strR   t   Gett   hreft	   next_feedt   entryt   a_entryt   append(   R   R$   R(   R,   R.   R&   (    (    R   t   AddAllElementsFromAllPages[   s      
 c         C   s   d |  i   t f } | d j	 o | d | 7} n y# t i i t	 |  i
 |    SWn. t i i j
 o } t | i d   n Xd S(   s   Retrieve one page of email lists   %s/emailList/%ss   ?startEmailListName=%si    N(   R   R#   t   API_VERt   urit   start_email_list_nameR'   R   R   t   EmailListFeedFromStringR)   R*   R   t   RequestErrort   eR   R   (   R   R3   R6   R2   (    (    R   t   RetrievePageOfEmailListse   s     #c         C   s"   |  i   } |  i | t i i  S(   s$   Retrieve all email list of a domain.N(   R   R7   t   retR0   R   R   R4   (   R   R8   (    (    R   t   RetrieveAllEmailListsp   s     c         C   sk   d |  i   t | f } y |  i | d t i i SWn. t i	 i
 j
 o } t | i d   n Xd S(   s0   Retreive a single email list by the list's name.s   %s/emailList/%s/%st	   converteri    N(   R   R#   R1   t	   list_nameR2   R*   R   R   t   EmailListEntryFromStringR   R5   R6   R   R   (   R   R;   R6   R2   (    (    R   t   RetrieveEmailListx   s     c         C   s   d |  i   t | f } y% t i i t |  i	 |    } Wn. t i i j
 o } t | i d   n X|  i | t i i  S(   s;   Retrieve All Email List Subscriptions for an Email Address.s   %s/emailList/%s?recipient=%si    N(   R   R#   R1   t	   recipientR2   R   R   R4   R)   R*   R8   R   R5   R6   R   R   R0   (   R   R>   R6   R2   R8   (    (    R   t   RetrieveEmailLists   s     %c         C   sb   d |  i   t | | f } y |  i |  Wn. t i i	 j
 o } t | i d   n Xd S(   s!   Remove recipient from email list.s   %s/emailList/%s/%s/recipient/%si    N(   R   R#   R1   R;   R>   R2   t   DeleteR   R   R5   R6   R   R   (   R   R>   R;   R6   R2   (    (    R   t   RemoveRecipientFromEmailList   s     c         C   s   d |  i   t | f } | d j	 o | d | 7} n y# t i i	 t
 |  i |    SWn. t i i j
 o } t | i d   n Xd S(   s1   Retrieve one page of recipient of an email list. s   %s/emailList/%s/%s/recipients   ?startRecipient=%si    N(   R   R#   R1   R;   R2   t   start_recipientR'   R   R   t    EmailListRecipientFeedFromStringR)   R*   R   R5   R6   R   R   (   R   R;   RB   R6   R2   (    (    R   t   RetrievePageOfRecipients   s     #c         C   s%   |  i |  } |  i | t i i  S(   s(   Retrieve all recipient of an email list.N(   R   RD   R;   R8   R0   R   R   RC   (   R   R;   R8   (    (    R   t   RetrieveAllRecipients   s     c         C   s   d |  i   t | f } t i i   } t i i	 d |  | _ y& t i i t |  i | |    SWn. t i i j
 o } t | i d   n Xd S(   s    Add a recipient to a email list.s   %s/emailList/%s/%s/recipientR   i    N(   R   R#   R1   R;   R2   R   R   t   EmailListRecipientEntryt   recipient_entryt   WhoR>   t   whot!   EmailListRecipientEntryFromStringR)   t   PostR   R5   R6   R   R   (   R   R>   R;   R6   R2   RG   (    (    R   t   AddRecipientToEmailList   s     &c         C   s_   d |  i   t | f } y |  i |  Wn. t i i j
 o } t
 | i d   n Xd S(   s   Delete a email lists   %s/emailList/%s/%si    N(   R   R#   R1   R;   R2   R@   R   R   R5   R6   R   R   (   R   R;   R6   R2   (    (    R   t   DeleteEmailList   s     c         C   s   d |  i   t f } t i i   } t i i d |  | _
 y& t i i t |  i | |    SWn. t i i j
 o } t | i d   n Xd S(   s   Create a email list. s   %s/emailList/%st   namei    N(   R   R#   R1   R2   R   R   t   EmailListEntryt   email_list_entryt	   EmailListR;   t
   email_listR<   R)   RK   R   R5   R6   R   R   (   R   R;   R6   RP   R2   (    (    R   t   CreateEmailList   s     &c         C   s_   d |  i   t | f } y |  i |  Wn. t i i j
 o } t
 | i d   n Xd S(   s   Delete a nicknames   %s/nickname/%s/%si    N(   R   R#   R1   t   nicknameR2   R@   R   R   R5   R6   R   R   (   R   RT   R6   R2   (    (    R   t   DeleteNickname   s     c         C   s   d |  i   t f } | d j	 o | d | 7} n y# t i i t	 |  i
 |    SWn. t i i j
 o } t | i d   n Xd S(   s,   Retrieve one page of nicknames in the domains   %s/nickname/%ss   ?startNickname=%si    N(   R   R#   R1   R2   t   start_nicknameR'   R   R   t   NicknameFeedFromStringR)   R*   R   R5   R6   R   R   (   R   RV   R6   R2   (    (    R   t   RetrievePageOfNicknames   s     #c         C   s"   |  i   } |  i | t i i  S(   s$   Retrieve all nicknames in the domainN(   R   RX   R8   R0   R   R   RW   (   R   R8   (    (    R   t   RetrieveAllNicknames   s     c         C   s   d |  i   t | f } y% t i i t |  i	 |    } Wn. t i i j
 o } t | i d   n X|  i | t i i  S(   s   Retrieve nicknames of the users   %s/nickname/%s?username=%si    N(   R   R#   R1   t	   user_nameR2   R   R   RW   R)   R*   R8   R   R5   R6   R   R   R0   (   R   RZ   R6   R2   R8   (    (    R   t   RetrieveNicknames   s     %c         C   sq   d |  i   t | f } y# t i i t |  i	 |    SWn. t i
 i j
 o } t | i d   n Xd S(   s   Retrieve a nickname.

    Args:
      nickname: string The nickname to retrieve

    Returns:
      gdata.apps.NicknameEntry
    s   %s/nickname/%s/%si    N(   R   R#   R1   RT   R2   R   R   t   NicknameEntryFromStringR)   R*   R   R5   R6   R   R   (   R   RT   R6   R2   (    (    R   t   RetrieveNickname   s     #c         C   s   d |  i   t f } t i i   } t i i d |  | _
 t i i d |  | _ y& t i i t |  i | |    SWn. t i i j
 o } t | i d   n Xd S(   s   Create a nicknames   %s/nickname/%sRZ   RN   i    N(   R   R#   R1   R2   R   R   t   NicknameEntryt   nickname_entryt   LoginRZ   t   logint   NicknameRT   R\   R)   RK   R   R5   R6   R   R   (   R   RZ   RT   R6   R2   R_   (    (    R   t   CreateNickname  s     &c         C   s_   d |  i   t | f } y |  i |  SWn. t i i j
 o } t
 | i d   n Xd S(   s   Delete a user accounts   %s/user/%s/%si    N(   R   R#   R1   RZ   R2   R@   R   R   R5   R6   R   R   (   R   RZ   R6   R2   (    (    R   t
   DeleteUser  s     c         C   st   d |  i   t | f } y& t i i t |  i	 | |    SWn. t i i j
 o } t | i d   n Xd S(   s   Update a user account.s   %s/user/%s/%si    N(   R   R#   R1   RZ   R2   R   R   t   UserEntryFromStringR)   t   Putt
   user_entryR   R5   R6   R   R   (   R   RZ   Rg   R6   R2   (    (    R   t
   UpdateUser#  s     &t   falsec      	   C   s   d |  i   t f }	 t i i   }
 t i i d | d | d | d |  |
 _ t i i d | d |  |
 _ t i i d t |   |
 _ y& t i i t |  i |
 |	    SWn. t i i j
 o } t | i d	   n Xd
 S(   s   Create a user account. s
   %s/user/%sRZ   R   t	   suspendedt   hash_function_namet   family_namet
   given_namet   limiti    N(   R   R#   R1   R2   R   R   t	   UserEntryRg   R`   RZ   R   Rj   t   password_hash_functionRa   t   NameRl   Rm   RN   t   QuotaR)   t   quota_limitt   quotaRe   RK   R   R5   R6   R   R   (   R   RZ   Rl   Rm   R   Rj   Rs   Rp   R6   R2   Rg   (    (    R   t
   CreateUser,  s     &c         C   sH   |  i |  } | i i d j o" d | i _ |  i | |  } n | S(   Nt   true(   R   t   RetrieveUserRZ   Rg   Ra   Rj   Rh   (   R   RZ   Rg   (    (    R   t   SuspendUser?  s
    c         C   sH   |  i |  } | i i d j o" d | i _ |  i | |  } n | S(   NRi   (   R   Rw   RZ   Rg   Ra   Rj   Rh   (   R   RZ   Rg   (    (    R   t   RestoreUserF  s
    c         C   sq   d |  i   t | f } y# t i i t |  i	 |    SWn. t i
 i j
 o } t | i d   n Xd S(   s   Retrieve an user account.

    Args:
      user_name: string The user name to retrieve

    Returns:
      gdata.apps.UserEntry
    s   %s/user/%s/%si    N(   R   R#   R1   RZ   R2   R   R   Re   R)   R*   R   R5   R6   R   R   (   R   RZ   R6   R2   (    (    R   Rw   M  s     #c         C   s   d |  i   t f } | d j	 o | d | 7} n y# t i i t	 |  i
 |    SWn. t i i j
 o } t | i d   n Xd S(   s*   Retrieve one page of users in this domain.s
   %s/user/%ss   ?startUsername=%si    N(   R   R#   R1   R2   t   start_usernameR'   R   R   t   UserFeedFromStringR)   R*   R   R5   R6   R   R   (   R   Rz   R6   R2   (    (    R   t   RetrievePageOfUsers]  s     #c         C   s"   |  i   } |  i | t i i  S(   s"   Retrieve all users in this domain.N(   R   R|   R8   R0   R   R   R{   (   R   R8   (    (    R   t   RetrieveAllUsersh  s     (    R   R   t   __doc__R'   R   R#   R0   R7   R9   R=   R?   RA   RD   RE   RL   RM   RS   RU   RX   RY   R[   R]   Rc   Rd   Rh   t   DEFAULT_QUOTA_LIMITRu   Rx   Ry   Rw   R|   R}   (    (    (    R   R   K   s8    
		
		
		
																		()   t
   __author__t	   xml.etreet   cElementTreeR   t   ImportErrort   elementtreet   urllibR   t   atom.servicet   atomt   gdata.servicet
   gdata.appsR1   t   HTTP_OKR   t   USER_DELETED_RECENTLYt   USER_SUSPENDEDt   DOMAIN_USER_LIMIT_EXCEEDEDt   DOMAIN_ALIAS_LIMIT_EXCEEDEDt   DOMAIN_SUSPENDEDt   DOMAIN_FEATURE_UNAVAILABLEt   ENTITY_EXISTSt   ENTITY_DOES_NOT_EXISTt   ENTITY_NAME_IS_RESERVEDt   ENTITY_NAME_NOT_VALIDt   INVALID_GIVEN_NAMEt   INVALID_FAMILY_NAMEt   INVALID_PASSWORDt   INVALID_USERNAMEt   INVALID_HASH_FUNCTION_NAMEt   INVALID_HASH_DIGGEST_LENGTHt   INVALID_EMAIL_ADDRESSt   INVALID_QUERY_PARAMETER_VALUEt!   TOO_MANY_RECIPIENTS_ON_EMAIL_LISTR   t	   ExceptionR   R   R   R   R   (   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R1   R   R   R   R   R   R   R   R   R   R   R   R   (    (    R   t   ?   sN   						