ó FRTc@sddlmZddlmZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdZdZdddddddgZdddgZd efd!„ƒYZd efd"„ƒYZd efd#„ƒYZdefd$„ƒYZd%S(&iÿÿÿÿ(tUser(tInvalidAclErrortAccessControlListtAllAuthenticatedUserstAllUserst DisplayNametDomaint EmailAddresstEntrytEntriest GroupByDomaint GroupByEmailt GroupByIdtIDtNametOwnert PermissiontScopettypet UserByEmailtUserByIdtprivates public-readsproject-privatespublic-read-writesauthenticated-readsbucket-owner-readsbucket-owner-full-controltREADtWRITEt FULL_CONTROLtACLcBskeZd d„Zed„ƒZd„Zd„Zd„Zd„Z d„Z d„Z d„Z d „Z RS( cCs||_t|ƒ|_dS(N(tparentR tentries(tselfR((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyt__init__9s cCs|S(N((R((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pytacl=scCs{t|dƒr(d|jjƒg}n dg}|j}|rjx'|jD]}|j|jƒƒqJWnddj|ƒS(NtownersOwner:%sts<%s>s, (thasattrRt__repr__Rt entry_listtappendtjoin(Rt entries_reprt acl_entrieste((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR"As  cCs2tdtd|d|ƒ}|jjj|ƒdS(NRt email_addresst permission(Rt USER_BY_EMAILRR#R$(RR*R)tentry((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pytadd_email_grantOs cCs2td|dtd|ƒ}|jjj|ƒdS(NR*Rtid(Rt USER_BY_IDRR#R$(RR*tuser_idR,((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pytadd_user_grantVscCs2tdtd|d|ƒ}|jjj|ƒdS(NRR)R*(RtGROUP_BY_EMAILRR#R$(RR*R)R,((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pytadd_group_email_grantZs cCs2tdtd|d|ƒ}|jjj|ƒdS(NRR.R*(Rt GROUP_BY_IDRR#R$(RR*tgroup_idR,((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pytadd_group_grant_scCsd|jƒtjƒkr.t|ƒ|_|jS|jƒtjƒkr\t|ƒ|_|jSdSdS(N(tlowertOWNERRRtENTRIESR RtNone(Rtnametattrst connection((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyt startElementcscCsJ|jƒtjƒkrn+|jƒtjƒkr6nt|||ƒdS(N(R7R8R9tsetattr(RR;tvalueR=((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyt endElementms cCscdt}t|dƒr/||jjƒ7}n|j}|rQ||jƒ7}n|dt7}|S(Ns<%s>Rs(tACCESS_CONTROL_LISTR!Rtto_xmlR(RtsR'((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRCus  N(t__name__t __module__R:RtpropertyRR"R-R1R3R6R>RARC(((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR7s       cBs8eZdd„Zd„Zd„Zd„Zd„ZRS(cCs||_g|_dS(N(RR#(RR((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRƒs cCs>g}x$|jD]}|j|jƒƒqWddj|ƒS(Ns s, (R#R$R"R%(RR&R(((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR"‰scCs@|jƒtjƒkr8t|ƒ}|jj|ƒ|SdSdS(N(R7tENTRYRR#R$R:(RR;R<R=R,((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR>s  cCs/|jƒtjƒkrnt|||ƒdS(N(R7RHR?(RR;R@R=((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRA—scCsM|js dSdt}x!|jD]}||jƒ7}q!W|dt7}|S(NR s<%s>s(R#R9RC(RRDR,((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRCs  N(RERFR:RR"R>RARC(((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR s     cBsJeZdddddddd„Zd„Zd„Zd„Zd„ZRS(cCs:|s$t||||||ƒ}n||_||_dS(N(RtscopeR*(RRIRR.R;R)tdomainR*((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRªs cCs d|jjƒ|jjƒfS(Ns<%s: %s>(RIR"R*(R((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR"±scCs}|jƒtjƒkrZt|kr=tdttfƒ‚nt||tƒ|_|jS|jƒtjƒkrundSdS(Ns Missing "%s" in "%s" part of ACL(R7tSCOPEtTYPERRRIt PERMISSIONR:(RR;R<R=((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR>´s cCs~|jƒtjƒkrn_|jƒtjƒkrj|jƒ}|tkr^td|ƒ‚n||_nt|||ƒdS(NsInvalid Permission "%s"(R7RKRMtstriptSupportedPermissionsRR*R?(RR;R@R=((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRAÏs   cCsIdt}||jjƒ7}|dt|jtf7}|dt7}|S(Ns<%s>s <%s>%ss(RHRIRCRMR*(RRD((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRCÚs  N(RERFR:RR"R>RARC(((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR¨s     cBseZigejƒ6gejƒ6ejƒgejƒ6ejƒejƒe jƒge jƒ6ejƒe jƒe jƒge jƒ6ejƒejƒe jƒge jƒ6ejƒe jƒe jƒgejƒ6Zdddddd„Zd„Zd„Zd„Zd„ZRS(cCsq||_||_||_||_||_||_|jjƒ|jkrmtdt t |jfƒ‚ndS(NsInvalid %s %s "%s" ( RRR;R.RJR)R7tALLOWED_SCOPE_TYPE_SUB_ELEMSRRKRL(RRRR.R;R)RJ((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRñs      cCskd}|jr|j}n*|jr0|j}n|jrE|j}n|r\d|j|fSd|jSdS(Ns<%s: %s>s<%s>(R:R.R)RJR(Rt named_entity((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR"ıs      cCsH|jƒ|j|jjƒkrDtd|tt|jfƒ‚ndS(Ns'Element "%s" not allowed in %s %s "%s" (R7RPRRRKRLR:(RR;R<R=((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyR> s  cCs°|jƒ}|jƒtjƒkr0||_n||jƒtjƒkrT||_nX|jƒtjƒkrx||_n4|jƒtjƒkrœ||_ nt |||ƒdS(N( RNR7tDOMAINRJt EMAIL_ADDRESSR)R R.tNAMER;R?(RR;R@R=((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRAs     cCsšdt|jf}|jjƒtjƒksˆ|jjƒtjƒkrLn<|jjƒtjƒkr„|dt|jtf7}n|jjƒtjƒksº|jjƒt jƒkrı|dt |j t f7}|j rˆ|dt |j t f7}qˆn‹|jjƒtjƒks3|jjƒtjƒkrv|dt|jtf7}|j rˆ|dt |j t f7}qˆntd|jƒ‚|dt7}|S(Ns<%s type="%s">s <%s>%ssInvalid scope type "%s" s(RKRR7tALL_AUTHENTICATED_USERSt ALL_USERStGROUP_BY_DOMAINRRRJR2R+RSR)R;RTR4R/R R.R(RRD((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRCs(     N(RERFRUR7RVRRRWt DISPLAY_NAMERSRTR2R R4R+R/RPR:RR"R>RARC(((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyRâs  (((+   N(t boto.gs.userRtboto.exceptionRRBRURVRXRRRSRHR9RWR2R4R RTR8RMRKRLR+R/tCannedACLStringsROtobjectRR RR(((s8/opt/freeware/lib/python2.7/site-packages/boto/gs/acl.pyts8  J':