U
    3dT                     @   sR   d dl mZ dddddddg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
   //tmp/pip-unpacked-wheel-d7dsrkjd/boto/s3/acl.py__init__!   s    zPolicy.__init__c                 C   s   g }| j jD ]h}|j| jjkr6|d|j|jf  q|jdkrH|j}n|jdkrZ|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   sR   |dkr| dd | _d S |dkr2t| | _| jS |dkrJt| | _| jS d S d S )NZAccessControlPolicyxmlnsOwnerAccessControlList)getr   r   r   ACLr   r	   nameattrs
connectionr
   r
   r   startElement5   s    

zPolicy.startElementc                 C   s$   |dkr
n|dkrnt | || d S )Nr   r   setattrr	   r"   valuer$   r
   r
   r   
endElementB   s
    zPolicy.endElementc                 C   sD   | j d k	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_xml)N)__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	   r2   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 )NZAmazonCustomerByEmail)r   r   r   Grantr   r   )r	   r   r   r3   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   r5   )r	   r   Zuser_idr   r3   r
   r
   r   add_user_grantc   s    zACL.add_user_grantc                 C   s*   |dkr"| j t|  | j d S d S d S )Nr6   )r   r   r6   r!   r
   r
   r   r%   g   s    
zACL.startElementc                 C   s   |dkr
nt | || d S )Nr6   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.   r3   r
   r
   r   r,   t   s
    
z
ACL.to_xml)N)N)
r/   r0   r1   r   r4   r7   r8   r%   r*   r,   r
   r
   r
   r   r    U   s   

r    c                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )r6   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   sj   |dkr|| _ nV|dkr || _nF|dkr0|| _n6|dkr@|| _n&|dkrJn|dkrZ|| _nt| || d S )NZIDZDisplayNameURIZEmailAddressr:   Z
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rZ|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)r/   r0   r1   r<   r   r%   r*   r,   r
   r
   r
   r   r6   |   s         
	r6   N)Zboto.s3.userr   ZCannedACLStringsobjectr   r    r6   r
   r
   r
   r   <module>   s     6'