B
    ?F[T                 @   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 )    )UserZ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   *lib/python3.7/site-packages/boto/s3/acl.py__init__!   s    zPolicy.__init__c             C   s   g }xt| j jD ]h}|j| jjkr8|d|j|jf  q|jdkrJ|j}n|jdkr\|j}n|j	}|d||jf  qW 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AccessControlPolicyZ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 )N)policyr   )r   r+   r   r   r	   r
   W   s    zACL.__init__c             C   s   | j | d S )N)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   r,   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   )r.   r   r   )r   r   Zuser_idr   r,   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 )Nr.   )r   r   r.   )r   r   r   r    r   r   r	   r!   g   s    
zACL.startElementc             C   s   |dkr
nt | || d S )Nr.   )r"   )r   r   r#   r    r   r   r	   r$   n   s    zACL.endElementc             C   s,   d}x| j D ]}|| 7 }qW |d7 }|S )Nz<AccessControlList>z</AccessControlList>)r   r&   )r   r'   r,   r   r   r	   r&   t   s
    z
ACL.to_xml)N)N)
r(   r)   r*   r
   r-   r/   r0   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 )r.   z5xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"Nc             C   s(   || _ || _|| _|| _|| _|| _d S )N)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   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DisplayNameZURIZEmailAddressr2   Z
Permission)r   r   r   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	   r&      s    

zGrant.to_xml)NNNNNN)r(   r)   r*   r3   r
   r!   r$   r&   r   r   r   r	   r.   |   s    
r.   N)Zboto.s3.userr   ZCannedACLStringsobjectr   r   r.   r   r   r   r	   <module>   s   6'