B
    "`                  @   s2   d dl Z d dlZd dlZd dlZG dd dZdS )    Nc               @   s   e Zd ZdZdZdZdddZdZdZdZ	dZ
dZi ZdZg 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d Zdd Zdd ZdS )FileGeneratorz&
        tipo do arquivo template
     FZteste)r      z/var/www/indexer/indexerc             K   s:   | dd| _| dd| _| dd}|r6| | dS )z?
            Define o tipo de arquivo a ser processado
        typepdfbasehtmlprefixFN)getfileTypefileBase	setPrefix)selfkwargsr	    r   1/var/www/indexer/indexer/classes/FileGenerator.py__init__$   s
    zFileGenerator.__init__c             C   s   d||f | _ | j S )Nz%s/%s_)
filePrefix)r   r	   r   r   r   r   4   s    zFileGenerator.setPrefixc             C   s   | j |d| _|  | _dS )u   
            Código do arquivo arquivo
            Define qual modelo arquivo será utilizado.
            Recomendado para arquivos unicos
        r   T)fileCoder
   fileNamegetFileAddrfileAddr)r   coder   r   r   setCode8   s    
zFileGenerator.setCodec             C   s    | dd |d || _dS )u   
            Loop do arquivo arquivo
            Define quais modelos PDF serão utilizados.
            Recomendado para arquivos em pedaços
        r   startendT)insertappendfileLoop)r   loopr   r   r   setLoopC   s    
zFileGenerator.setLoopc             C   s
   || _ dS )uK   
            Variáveis a serem utilizadas na criação do arquivo
        T)fileVars)r   varsr   r   r   setVarsO   s    zFileGenerator.setVarsc             K   s`   | j s"|dd| _ | j s"td| j| j| j | j|dd | jd}d| }td| |S )	u;   
            Retorna endereço relativo do arquivo
        nameFZFilenamecategoryr   )rootr   r$   r   r%   r	   zB%(root)s/%(base)s/%(type)s/%(prefix)s%(name)s%(category)s.%(type)sz=============+>)	r   r
   	ExceptionrootAddrr   r   
capitalizer   print)r   r   ZaddrVarsZaddrr   r   r   r   V   s    

zFileGenerator.getFileAddrc             C   s   d|    S )Nz	./_tmp/%s)getFileHashName)r   r   r   r   getFileTempq   s    zFileGenerator.getFileTempc             C   s   t j|  }|sdS dS )z/
            Checa se o arquivo existe
        TF)ospathisfiler,   )r   Z
fileExistsr   r   r   errost   s    zFileGenerator.errosc             C   sZ   d}| j dkr| }| j dks*| j dkrJ|| _t| j|dd}| }|rV|  |S )NFr   Zconfr   )r$   r)r   readr   openr   close)r   r$   filetextr   r   r   getTextFromFile   s    
zFileGenerator.getTextFromFilec             C   s6   | j s0ttj dd}t| | _ | j S )uC   
            Cria ou retorna o nome temporário do arquivo
        z%Y/%m/%d %H:%M:%SzUTF-8)	fileHashstrdatetimeZnowstrftimeencodehashlibZsha1Z	hexdigest)r   Zdater   r   r   r+      s    zFileGenerator.getFileHashNamec          
   C   s  d}t | jr,x| jD ]}|| |7 }qW x| j D ]\}}d}d}t|trd}d}d}d}t }	x|t |k r|d| }
| |
}| jdt	|| d	|
 t|| tsXx||  D ]\}}|d
krd}t|t
r0d}x@| D ]4\}}td||||f t||dtj}|d7 }qW td|||f t||dtj}qW n| jd||  ||7 }|d7 }qrW |}t|t
rd}xB| D ]6\}}td||||f t||dtj}|d7 }qW |}td|||f t||dtj}q:W tdd|}|| _|S )z$
            Gera o ARQUIVO
        r   {}[]r   z%sBlockz
VALUE TYPEforN-z\_%s{2}\_(%s\_%s)\_%s{2}\_
   r   z\_%s{2}\_(%s)\_%s{2}\_zV ITEM IS A LISTz\_\%s{2}\_(%s)\_\%s{2}\_z(\{|\[|\(){4}.*(\}|\]|\)){4})lenr   r7   r!   items
isinstancelistdebugZ
writeAlertr   dictresubr9   
IGNORECASEfileText)r   r6   r   kvZ
delimiterAZ
delimiterBiZblockDataTextZblockFileListZblockFileNameZblockFileTextZblockKeyZblockValZi2Z	blockKey2Z	blockVal2r   r   r   make   sR    

$($&zFileGenerator.makeN)__name__
__module____qualname____doc__r   r   r   r(   r   rN   r   r   r!   r8   r   r   r   r   r    r#   r   r,   r0   r7   r+   rR   r   r   r   r   r      s0   r   )rK   r=   r:   r-   r   r   r   r   r   <module>   s    