o ckF[Á,ã@s¼ddlmZddlmZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdZdZgd¢Z gd¢Z Gdd„deƒZGdd „d eƒZGdd „d eƒZGdd„deƒZdS)é)ÚUser)ÚInvalidAclErrorÚAccessControlListÚAllAuthenticatedUsersÚAllUsersÚ DisplayNameÚDomainÚ EmailAddressÚEntryÚEntriesÚ GroupByDomainÚ GroupByEmailÚ GroupByIdÚIDÚNameÚOwnerÚ PermissionÚScopeÚtypeÚ UserByEmailÚUserById)Úprivatez public-readzproject-privatezpublic-read-writezauthenticated-readzbucket-owner-readzbucket-owner-full-control)ÚREADÚWRITEÚ FULL_CONTROLc@sbeZdZddd„Zedd„ƒZdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dS)ÚACLNcCs||_t|ƒ|_dS©N)Úparentr Úentries©Úselfr©r!ú-/usr/lib/python3/dist-packages/boto/gs/acl.pyÚ__init__9sz ACL.__init__cCs|Srr!©r r!r!r"Úacl=szACL.aclcCsTt|dƒrd|j ¡g}ndg}|j}|r#|jD] }| | ¡¡qdd |¡S)NÚownerzOwner:%sÚú<%s>ú, )Úhasattrr&Ú__repr__rÚ entry_listÚappendÚjoin)r Ú entries_reprÚ acl_entriesÚer!r!r"r+As  z ACL.__repr__cCó tt||d}|jj |¡dS©N)rÚ email_addressÚ permission)r Ú USER_BY_EMAILrr,r-©r r5r4Úentryr!r!r"Úadd_email_grantOóÿzACL.add_email_grantcCs t|t|d}|jj |¡dS)N)r5rÚid)r Ú USER_BY_IDrr,r-)r r5Úuser_idr8r!r!r"Úadd_user_grantVózACL.add_user_grantcCr2r3)r ÚGROUP_BY_EMAILrr,r-r7r!r!r"Úadd_group_email_grantZr:zACL.add_group_email_grantcCr2)N)rr;r5)r Ú GROUP_BY_IDrr,r-)r r5Úgroup_idr8r!r!r"Úadd_group_grant_r?zACL.add_group_grantcCsD| ¡t ¡krt|ƒ|_|jS| ¡t ¡kr t|ƒ|_|jSdSr)ÚlowerÚOWNERrr&ÚENTRIESr r©r ÚnameÚattrsÚ connectionr!r!r"Ú startElementcs  zACL.startElementcCs8| ¡t ¡kr dS| ¡t ¡krdSt|||ƒdSr)rErFrGÚsetattr©r rIÚvaluerKr!r!r"Ú endElementms zACL.endElementcCsFdt}t|dƒr||j ¡7}|j}|r|| ¡7}|dt7}|S)Nr(r&ú)ÚACCESS_CONTROL_LISTr*r&Úto_xmlr)r Úsr0r!r!r"rSus   z ACL.to_xmlr)Ú__name__Ú __module__Ú __qualname__r#Úpropertyr%r+r9r>rArDrLrPrSr!r!r!r"r7s   rc@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „ZdS) r NcCs||_g|_dSr)rr,rr!r!r"r#ƒs zEntries.__init__cCs,g}|jD] }| | ¡¡qdd |¡S)Nz r))r,r-r+r.)r r/r1r!r!r"r+‰s zEntries.__repr__cCs,| ¡t ¡krt|ƒ}|j |¡|SdSr)rEÚENTRYr r,r-)r rIrJrKr8r!r!r"rLs  zEntries.startElementcCs$| ¡t ¡kr dSt|||ƒdSr)rErYrMrNr!r!r"rP—szEntries.endElementcCs:|jsdSdt}|jD]}|| ¡7}q |dt7}|S)Nr'r(rQ)r,rGrS)r rTr8r!r!r"rSs  zEntries.to_xmlr©rUrVrWr#r+rLrPrSr!r!r!r"r s   c@s:eZdZ  d dd„Zdd„Zdd„Zdd „Zd d „ZdS) r NcCs&|s t||||||ƒ}||_||_dSr)rÚscoper5)r r[rr;rIr4Údomainr5r!r!r"r#ªs zEntry.__init__cCsd|j ¡|j ¡fS)Nú<%s: %s>)r[r+r5r$r!r!r"r+±szEntry.__repr__cCsV| ¡t ¡krt|vrtdttfƒ‚t||tƒ|_|jS| ¡t ¡kr)dSdS)Nz Missing "%s" in "%s" part of ACL)rEÚSCOPEÚTYPErrr[Ú PERMISSIONrHr!r!r"rL´sÿzEntry.startElementcCsZ| ¡t ¡kr dS| ¡t ¡kr%| ¡}|tvr td|ƒ‚||_dSt|||ƒdS)NzInvalid Permission "%s")rEr^r`ÚstripÚSupportedPermissionsrr5rMrNr!r!r"rPÏs  zEntry.endElementcCs:dt}||j ¡7}|dt|jtf7}|dt7}|S)Nr(ú <%s>%srQ)rYr[rSr`r5©r rTr!r!r"rSÚs  z Entry.to_xml)NNNNNNNrZr!r!r!r"r ¨s ÿ c@sÄeZdZe ¡ge ¡ge ¡e ¡ge ¡e  ¡e  ¡e  ¡ge  ¡e  ¡e  ¡e  ¡ge ¡e  ¡e  ¡e  ¡ge ¡e  ¡e  ¡e  ¡giZ  d dd„Zdd„Zdd„Zdd „Zd d „ZdS) rNcCsL||_||_||_||_||_||_|j ¡|jvr$tdt t |jfƒ‚dS)NzInvalid %s %s "%s" ) rrrIr;r\r4rEÚALLOWED_SCOPE_TYPE_SUB_ELEMSrr^r_)r rrr;rIr4r\r!r!r"r#ñs ÿÿzScope.__init__cCsHd}|jr |j}n |jr|j}n|jr|j}|rd|j|fSd|jS)Nr]r()r;r4r\r)r Ú named_entityr!r!r"r+ýs zScope.__repr__cCs2| ¡|j|j ¡vrtd|tt|jfƒ‚dS)Nz'Element "%s" not allowed in %s %s "%s" )rErerrr^r_rHr!r!r"rL sÿ ÿzScope.startElementcCs€| ¡}| ¡t ¡kr||_dS| ¡t ¡kr||_dS| ¡t ¡kr+||_dS| ¡t ¡kr8||_ dSt |||ƒdSr) rarEÚDOMAINr\Ú EMAIL_ADDRESSr4rr;ÚNAMErIrMrNr!r!r"rPs    zScope.endElementcCs dt|jf}|j ¡t ¡ks|j ¡t ¡krnn|j ¡t ¡kr.|dt|jtf7}nZ|j ¡t ¡ks@|j ¡t  ¡krX|dt |j t f7}|j rW|dt |j t f7}n0|j ¡t ¡ksj|j ¡t ¡kr‚|dt|jtf7}|j r|dt |j t f7}ntd|jƒ‚|dt7}|S)Nz<%s type="%s">rczInvalid scope type "%s" rQ)r^rrEÚALL_AUTHENTICATED_USERSÚ ALL_USERSÚGROUP_BY_DOMAINrgr\r@r6rhr4rIrirBr<rr;rrdr!r!r"rSs. ÿ€€  z Scope.to_xml)NNNNN)rUrVrWrjrErkrlrgr@Ú DISPLAY_NAMErhrirBrr6r<rer#r+rLrPrSr!r!r!r"râs(ÿÿ÷  ÿ   N)Ú boto.gs.userrÚboto.exceptionrrRrjrkrmrgrhrYrGrlr@rBrrirFr`r^r_r6r<ÚCannedACLStringsrbÚobjectrr r rr!r!r!r"Ús:  J':