o ckF[,@sddlmZddlmZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdZdZgdZ gdZ GdddeZGdd d eZGdd d eZGdddeZdS))User)InvalidAclErrorAccessControlListAllAuthenticatedUsersAllUsers DisplayNameDomain EmailAddressEntryEntries GroupByDomain GroupByEmail GroupByIdIDNameOwner PermissionScopetype UserByEmailUserById)privatez public-readzproject-privatezpublic-read-writezauthenticated-readzbucket-owner-readzbucket-owner-full-control)READWRITE FULL_CONTROLc@sbeZdZdddZeddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ dS)ACLNcCs||_t||_dSN)parentr entriesselfrr!-/usr/lib/python3/dist-packages/boto/gs/acl.py__init__9sz ACL.__init__cCs|Srr!r r!r!r"acl=szACL.aclcCsTt|drd|jg}ndg}|j}|r#|jD] }||qdd|S)NownerzOwner:%s<%s>, )hasattrr&__repr__r entry_listappendjoin)r entries_repr acl_entrieser!r!r"r+As  z ACL.__repr__cC tt||d}|jj|dSN)r email_address permission)r USER_BY_EMAILrr,r-r r5r4entryr!r!r"add_email_grantOzACL.add_email_grantcCs t|t|d}|jj|dS)N)r5rid)r USER_BY_IDrr,r-)r r5user_idr8r!r!r"add_user_grantVzACL.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 r5group_idr8r!r!r"add_group_grant_r?zACL.add_group_grantcCsD|tkrt||_|jS|tkr t||_|jSdSr)lowerOWNERrr&ENTRIESr rr nameattrs connectionr!r!r" startElementcs  zACL.startElementcCs8|tkr dS|tkrdSt|||dSr)rErFrGsetattrr rIvaluerKr!r!r" endElementms zACL.endElementcCsFdt}t|dr||j7}|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 ddZddZddZdd 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,|tkrt|}|j||SdSr)rEENTRYr r,r-)r rIrJrKr8r!r!r"rLs  zEntries.startElementcCs$|tkr dSt|||dSr)rErYrMrNr!r!r"rPszEntries.endElementcCs:|jsdSdt}|jD]}||7}q |dt7}|S)Nr'r(rQ)r,rGrS)r rTr8r!r!r"rSs  zEntries.to_xmlrrUrVrWr#r+rLrPrSr!r!r!r"r s   c@s:eZdZ  d ddZddZddZdd Zd d ZdS) r NcCs&|s t||||||}||_||_dSr)rscoper5)r r[rr;rIr4domainr5r!r!r"r#s zEntry.__init__cCsd|j|jfS)N<%s: %s>)r[r+r5r$r!r!r"r+szEntry.__repr__cCsV|tkrt|vrtdttft||t|_|jS|tkr)dSdS)Nz Missing "%s" in "%s" part of ACL)rESCOPETYPErrr[ PERMISSIONrHr!r!r"rLszEntry.startElementcCsZ|tkr dS|tkr%|}|tvr td|||_dSt|||dS)NzInvalid Permission "%s")rEr^r`stripSupportedPermissionsrr5rMrNr!r!r"rPs  zEntry.endElementcCs:dt}||j7}|dt|jtf7}|dt7}|S)Nr( <%s>%srQ)rYr[rSr`r5r rTr!r!r"rSs  z Entry.to_xml)NNNNNNNrZr!r!r!r"r s  c@seZdZegegeegee e e ge e e e gee e e gee e e giZ  d ddZddZddZdd Zd d ZdS) rNcCsL||_||_||_||_||_||_|j|jvr$tdt t |jfdS)NzInvalid %s %s "%s" ) rrrIr;r\r4rEALLOWED_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|jvrtd|tt|jfdS)Nz'Element "%s" not allowed in %s %s "%s" )rErerrr^r_rHr!r!r"rL s zScope.startElementcCs|}|tkr||_dS|tkr||_dS|tkr+||_dS|tkr8||_ dSt |||dSr) rarEDOMAINr\ EMAIL_ADDRESSr4rr;NAMErIrMrNr!r!r"rPs    zScope.endElementcCs dt|jf}|jtks|jtkrnn|jtkr.|dt|jtf7}nZ|jtks@|jt krX|dt |j t f7}|j rW|dt |j t f7}n0|jtksj|jtkr|dt|jtf7}|j r|dt |j t f7}ntd|j|dt7}|S)Nz<%s type="%s">rczInvalid scope type "%s" rQ)r^rrEALL_AUTHENTICATED_USERS ALL_USERSGROUP_BY_DOMAINrgr\r@r6rhr4rIrirBr<rr;rrdr!r!r"rSs.   z Scope.to_xml)NNNNN)rUrVrWrjrErkrlrgr@ DISPLAY_NAMErhrirBrr6r<rer#r+rLrPrSr!r!r!r"rs(     N) boto.gs.userrboto.exceptionrrRrjrkrmrgrhrYrGrlr@rBrrirFr`r^r_r6r<CannedACLStringsrbobjectrr r rr!r!r!r"s:  J':