o
    ȷeT                     @   sH   d dl mZ g dZG dd deZG dd deZG dd deZd	S )
    )User)privatezpublic-readzpublic-read-writezauthenticated-readzbucket-owner-readzbucket-owner-full-controlzlog-delivery-writec                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )PolicyNc                 C   s   || _ d | _d | _d S N)parent	namespaceacl)selfr    r
   B/var/www/ideatree/venv/lib/python3.10/site-packages/boto/s3/acl.py__init__!   s   
zPolicy.__init__c                 C   s   g }| j jD ]4}|j| jjkr|d|j|jf  q|jdkr$|j}n|jdkr-|j}n|j	}|d||jf  qdd
| S )Nz%s (owner) = %sCanonicalUserGroupz%s = %sz<Policy: %s>z, )r   grantsidownerappenddisplay_name
permissiontypeuriemail_addressjoin)r	   r   gur
   r
   r   __repr__&   s   

zPolicy.__repr__c                 C   sN   |dkr| dd | _d S |dkrt| | _| jS |dkr%t| | _| jS d S )NAccessControlPolicyxmlnsOwnerAccessControlList)getr   r   r   ACLr   r	   nameattrs
connectionr
   r
   r   startElement5   s   

zPolicy.startElementc                 C   s(   |dkrd S |dkrd S t | || d S )Nr   r   setattrr	   r#   valuer%   r
   r
   r   
endElementB   s
   zPolicy.endElementc                 C   sD   | j d urd| j }nd}|| j 7 }|| j 7 }|d7 }|S )Nz!<AccessControlPolicy xmlns="{0}">z<AccessControlPolicy>z</AccessControlPolicy>)r   formatr   to_xmlr   r	   sr
   r
   r   r-   J   s   
zPolicy.to_xmlr   )__name__
__module____qualname__r   r   r&   r+   r-   r
   r
   r
   r   r      s    
r   c                   @   sH   e Zd ZdddZdd Zdd Zddd	Zd
d Zdd Zdd Z	dS )r!   Nc                 C   s   || _ g | _d S r   )policyr   )r	   r3   r
   r
   r   r   W   s   
zACL.__init__c                 C   s   | j | d S r   )r   r   )r	   grantr
   r
   r   	add_grant[   s   zACL.add_grantc                 C   s   t |d|d}| j| d S )NAmazonCustomerByEmail)r   r   r   Grantr   r   )r	   r   r   r4   r
   r
   r   add_email_grant^   s   zACL.add_email_grantc                 C   s    t |d||d}| j| d S )Nr   )r   r   r   r   r7   )r	   r   user_idr   r4   r
   r
   r   add_user_grantc   s   zACL.add_user_grantc                 C   s&   |dkr| j t|  | j d S d S )Nr8   )r   r   r8   r"   r
   r
   r   r&   g   s   
zACL.startElementc                 C   s   |dkrd S t | || d S )Nr8   r'   r)   r
   r
   r   r+   n   s   zACL.endElementc                 C   s(   d}| j D ]}|| 7 }q|d7 }|S )Nz<AccessControlList>z</AccessControlList>)r   r-   )r	   r/   r4   r
   r
   r   r-   t   s
   
z
ACL.to_xmlr   )
r0   r1   r2   r   r5   r9   r;   r&   r+   r-   r
   r
   r
   r   r!   U   s    

r!   c                   @   s6   e Zd ZdZ		dddZdd Zdd Zd	d
 ZdS )r8   z5xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"Nc                 C   s(   || _ || _|| _|| _|| _|| _d S r   )r   r   r   r   r   r   )r	   r   r   r   r   r   r   r
   r
   r   r      s   
zGrant.__init__c                 C   s   |dkr	|d | _ d S )NGranteezxsi:type)r   r"   r
   r
   r   r&      s   
zGrant.startElementc                 C   sv   |dkr	|| _ d S |dkr|| _d S |dkr|| _d S |dkr$|| _d S |dkr*d S |dkr3|| _d S t| || d S )NIDDisplayNameURIEmailAddressr=   
Permission)r   r   r   r   r   r(   r)   r
   r
   r   r+      s   




zGrant.endElementc                 C   s   d}|d| j | jf 7 }| jdkr |d| j 7 }|d| j 7 }n| jdkr-|d| j 7 }n|d| j 7 }|d	7 }|d
| j 7 }|d7 }|S )Nz<Grant>z<Grantee %s xsi:type="%s">r   z<ID>%s</ID>z<DisplayName>%s</DisplayName>r   z<URI>%s</URI>z<EmailAddress>%s</EmailAddress>z
</Grantee>z<Permission>%s</Permission>z</Grant>)	NameSpacer   r   r   r   r   r   r.   r
   r
   r   r-      s   

zGrant.to_xml)NNNNNN)r0   r1   r2   rC   r   r&   r+   r-   r
   r
   r
   r   r8   |   s    
	r8   N)boto.s3.userr   CannedACLStringsobjectr   r!   r8   r
   r
   r
   r   <module>   s
   6'