3
b                 @   s  d dl mZmZ d dlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ yd dljjZW n ek
rz   d dljZY nX ejdkZg ZG d	d
 d
eZejd
 edkre Zee ejejd ee ejd ee ejd ee ej  ee dS )    )absolute_importprint_functionN   )S3Uri)ParameterError)getTreeFromXmldecode_from_s3)GranteeAnonRead   c               @   s^   e Zd ZdZdZd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 )	AccessLogz+<BucketLoggingStatus></BucketLoggingStatus>z[<LoggingEnabled><TargetBucket></TargetBucket><TargetPrefix></TargetPrefix></LoggingEnabled>Nc             C   s$   |s
| j }t|| _d| jjd< d S )Nz&http://doc.s3.amazonaws.com/2006-03-01xmlns)LOG_DISABLEDr   treeattrib)selfxml r   L/oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/AccessLog.py__init__   s    
zAccessLog.__init__c             C   s   | j jdd k	S )Nz.//LoggingEnabled)r   find)r   r   r   r   isLoggingEnabled$   s    zAccessLog.isLoggingEnabledc             C   s    | j jd}|r| j j| d S )Nz.//LoggingEnabled)r   r   remove)r   elr   r   r   disableLogging'   s    zAccessLog.disableLoggingc             C   sJ   | j jd}|s&t| j}| j j| |j |jd_|j |jd_d S )Nz.//LoggingEnabledz.//TargetBucketz.//TargetPrefix)r   r   r   LOG_TEMPLATEappendbuckettextobject)r   Ztarget_prefix_urir   r   r   r   enableLogging,   s    
zAccessLog.enableLoggingc             C   s:   | j  r2d| jjdj| jjdjf }tj|S dS d S )Nz
s3://%s/%sz.//LoggingEnabled//TargetBucketz.//LoggingEnabled//TargetPrefix )r   r   r   r   r   )r   Ztarget_prefixr   r   r   targetPrefix4   s    
zAccessLog.targetPrefixc             C   sf   | j jd}|d krtd|jd}|s>|s2d S |j| n$t j }|sXtj|d}|j| d S )Nz.//LoggingEnabledz3Logging not enabled, can't set default ACL for logsz.//TargetGrantsZTargetGrants)	r   r   r   r   r	   Z
getElementET
SubElementr   )r   
acl_publicletgZ	anon_readr   r   r   setAclPublic=   s    

zAccessLog.setAclPublicc             C   s
   t  d S )N)NotImplementedError)r   r   r   r   isAclPublicP   s    zAccessLog.isAclPublicc             C   s   t tj| jS )N)r   r"   tostringr   )r   r   r   r   __unicode__S   s    zAccessLog.__unicode__c             C   s$   t rtj| jddS tj| jS d S )Nunicode)encoding)PY3r"   r*   r   )r   r   r   r   __str__V   s    zAccessLog.__str__)N)__name__
__module____qualname__r   r   r   r   r   r   r!   r'   r)   r+   r/   r   r   r   r   r      s   
	r   __main__zs3://targetbucket/prefix/log-TF)r
   r   )
__future__r   r   sysr    r   
Exceptionsr   	BaseUtilsr   r   ACLr	   xml.etree.ElementTreeetreeElementTreer"   ImportErrorZelementtree.ElementTreeversion_infor.   __all__r   r   r   r0   logprintr   r'   r   r   r   r   r   <module>	   s0   
D



