o
    ȷe,                     @   s   d dl mZ d dlm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g dZ	 g dZ	 G dd deZG dd
 d
eZG dd	 d	eZG dd deZdS )    )User)InvalidAclErrorAccessControlListAllAuthenticatedUsersAllUsersDisplayNameDomainEmailAddressEntryEntriesGroupByDomainGroupByEmail	GroupByIdIDNameOwner
PermissionScopetypeUserByEmailUserById)privatezpublic-readzproject-privatezpublic-read-writezauthenticated-readzbucket-owner-readzbucket-owner-full-control)READWRITEFULL_CONTROLc                   @   sb   e Zd ZdddZedd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd ZdS )ACLNc                 C   s   || _ t| | _d S N)parentr   entriesselfr    r!   B/var/www/ideatree/venv/lib/python3.10/site-packages/boto/gs/acl.py__init__9   s   zACL.__init__c                 C   s   | S r   r!   r    r!   r!   r"   acl=   s   zACL.aclc                 C   sT   t | drd| j  g}ndg}| j}|r#|jD ]	}||  qdd| S )NownerzOwner:%s <%s>, )hasattrr&   __repr__r   
entry_listappendjoin)r    entries_repracl_entrieser!   r!   r"   r+   A   s   

zACL.__repr__c                 C       t t||d}| jj| d S N)r   email_address
permission)r
   USER_BY_EMAILr   r,   r-   r    r5   r4   entryr!   r!   r"   add_email_grantO      zACL.add_email_grantc                 C   s    t |t|d}| jj| d S )N)r5   r   id)r
   
USER_BY_IDr   r,   r-   )r    r5   user_idr8   r!   r!   r"   add_user_grantV      zACL.add_user_grantc                 C   r2   r3   )r
   GROUP_BY_EMAILr   r,   r-   r7   r!   r!   r"   add_group_email_grantZ   r:   zACL.add_group_email_grantc                 C   r2   )N)r   r;   r5   )r
   GROUP_BY_IDr   r,   r-   )r    r5   group_idr8   r!   r!   r"   add_group_grant_   r?   zACL.add_group_grantc                 C   sD   |  t  krt| | _| jS |  t  kr t| | _| jS d S r   )lowerOWNERr   r&   ENTRIESr   r   r    nameattrs
connectionr!   r!   r"   startElementc   s   

zACL.startElementc                 C   s8   |  t  kr
d S |  t  krd S t| || d S r   )rE   rF   rG   setattrr    rI   valuerK   r!   r!   r"   
endElementm   s
   zACL.endElementc                 C   sF   dt  }t| dr|| j 7 }| j}|r|| 7 }|dt  7 }|S )Nr(   r&   </%s>)ACCESS_CONTROL_LISTr*   r&   to_xmlr   )r    sr0   r!   r!   r"   rS   u   s   
z
ACL.to_xmlr   )__name__
__module____qualname__r#   propertyr%   r+   r9   r>   rA   rD   rL   rP   rS   r!   r!   r!   r"   r   7   s    


r   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )r   Nc                 C   s   || _ g | _d S r   )r   r,   r   r!   r!   r"   r#      s   
zEntries.__init__c                 C   s,   g }| j D ]	}||  qdd| S )Nz<Entries: %s>r)   )r,   r-   r+   r.   )r    r/   r1   r!   r!   r"   r+      s   
zEntries.__repr__c                 C   s,   |  t  krt| }| j| |S d S r   )rE   ENTRYr
   r,   r-   )r    rI   rJ   rK   r8   r!   r!   r"   rL      s
   zEntries.startElementc                 C   s$   |  t  kr
d S t| || d S r   )rE   rY   rM   rN   r!   r!   r"   rP      s   zEntries.endElementc                 C   s:   | j sdS dt }| j D ]}|| 7 }q|dt 7 }|S )Nr'   r(   rQ   )r,   rG   rS   )r    rT   r8   r!   r!   r"   rS      s   
zEntries.to_xmlr   rU   rV   rW   r#   r+   rL   rP   rS   r!   r!   r!   r"   r      s    
c                   @   s:   e Zd Z		dddZdd Zdd Zdd	 Zd
d ZdS )r
   Nc                 C   s&   |st | |||||}|| _|| _d S r   )r   scoper5   )r    r[   r   r;   rI   r4   domainr5   r!   r!   r"   r#      s   
zEntry.__init__c                 C   s   d| j  | j f S )N<%s: %s>)r[   r+   r5   r$   r!   r!   r"   r+      s   zEntry.__repr__c                 C   sV   |  t  krt|vrtdttf t| |t | _| jS |  t  kr)d S d S )Nz Missing "%s" in "%s" part of ACL)rE   SCOPETYPEr   r   r[   
PERMISSIONrH   r!   r!   r"   rL      s   zEntry.startElementc                 C   sZ   |  t  kr
d S |  t  kr%| }|tvr td| || _d S t| || d S )NzInvalid Permission "%s")rE   r^   r`   stripSupportedPermissionsr   r5   rM   rN   r!   r!   r"   rP      s   
zEntry.endElementc                 C   s:   dt  }|| j 7 }|dt| jtf 7 }|dt  7 }|S )Nr(   <%s>%s</%s>rQ   )rY   r[   rS   r`   r5   r    rT   r!   r!   r"   rS      s
   zEntry.to_xml)NNNNNNNrZ   r!   r!   r!   r"   r
      s    
c                   @   s   e Zd Ze g e g e e ge e	 e
 e ge e	 e e ge e	 e
 e ge e	 e e giZ		dddZdd Zdd Zdd	 Zd
d ZdS )r   Nc                 C   sL   || _ || _|| _|| _|| _|| _| j | jvr$tdt	t
| jf d S )NzInvalid %s %s "%s" )r   r   rI   r;   r\   r4   rE   ALLOWED_SCOPE_TYPE_SUB_ELEMSr   r^   r_   )r    r   r   r;   rI   r4   r\   r!   r!   r"   r#      s   
zScope.__init__c                 C   sH   d }| j r	| j }n| jr| j}n| jr| j}|rd| j|f S d| j S )Nr]   r(   )r;   r4   r\   r   )r    named_entityr!   r!   r"   r+      s   
zScope.__repr__c                 C   s2   |  | j| j   vrtd|tt| jf d S )Nz'Element "%s" not allowed in %s %s "%s" )rE   re   r   r   r^   r_   rH   r!   r!   r"   rL   
  s   zScope.startElementc                 C   s   |  }| t kr|| _d S | t kr|| _d S | t kr+|| _d S | t kr8|| _	d S t
| || d S r   )ra   rE   DOMAINr\   EMAIL_ADDRESSr4   r   r;   NAMErI   rM   rN   r!   r!   r"   rP     s   



zScope.endElementc                 C   s   dt | jf }| j t ks| j t krnn| j t kr.|dt| jtf 7 }nZ| j t ks@| j t	 krX|dt
| jt
f 7 }| jrW|dt| jtf 7 }n0| j t ksj| j t kr|dt| jtf 7 }| jr|dt| jtf 7 }ntd| j|dt  7 }|S )Nz<%s type="%s">rc   zInvalid scope type "%s" rQ   )r^   r   rE   ALL_AUTHENTICATED_USERS	ALL_USERSGROUP_BY_DOMAINrg   r\   r@   r6   rh   r4   rI   ri   rB   r<   r   r;   r   rd   r!   r!   r"   rS     s.   
zScope.to_xml)NNNNN)rU   rV   rW   rj   rE   rk   rl   rg   r@   DISPLAY_NAMErh   ri   rB   r   r6   r<   re   r#   r+   rL   rP   rS   r!   r!   r!   r"   r      s(    
N)boto.gs.userr   boto.exceptionr   rR   rj   rk   rm   rg   rh   rY   rG   rl   r@   rB   r   ri   rF   r`   r^   r_   r6   r<   CannedACLStringsrb   objectr   r   r
   r   r!   r!   r!   r"   <module>   s:   J':