
    Ii*                     <    d dl Z d dlmZ d dlmZ d Zd Zd Zd Zy)    N)secure_filename)current_appc                 z    d| v xr6 | j                  dd      d   j                         t        j                  d   v S )u/   Verifica se a extensão do arquivo é permitida.   ALLOWED_EXTENSIONS)rsplitlowerr   config)filenames    (/srv/www/ollama/chat-ollama/src/utils.pyallowed_filer      sB    (? Z??3"1%++-1C1CDX1YYZ    c                     | rnt        | j                        rYt        | j                        }t        j                  j                  t        j                  d   |      }| j                  |       |S y)u)   Salva um arquivo no diretório de uploadsUPLOAD_FOLDERN)	r   r   r   ospathjoinr   r   save)filer   	file_paths      r   	save_filer   
   sR    T]]+"4==1GGLL!3!3O!DhO			)r   c                     	 t         j                  j                  |       rt        j                  |        y	 y# t        $ r Y yw xY w)zRemove um arquivo do sistemaTF)r   r   existsremove	Exception)r   s    r   delete_filer      sD    77>>)$IIi  %
   s   49 	AAc           	      J   t         j                  j                  |      d   j                         }d}	 |dk(  r)t	        | dd      5 }|j                         }ddd       |S |dk(  rsd	dl}t	        | d
      5 }|j                  |      }t        t        |j                              D ]%  }||j                  |   j                         dz   z  }' 	 ddd       |S |dv r;d	dl}|j                  |       }	|	j                  D ]  }
||
j                  dz   z  } 	 |S |dv rd	dl}|j#                  |       }|j$                  D ]j  }||   }|j'                         D ]P  }|D cg c]  }|j(                  |j(                   }}|s,|dj+                  t-        t.        |            dz   z  }R l 	 |S |dk(  rMd	dl}t	        | dd      5 }|j3                  |      }|D ]  }|dj+                  |      dz   z  } 	 ddd       |S |dk(  rAd	dl}t	        | dd      5 }|j7                  |      }|j9                  |d      }ddd       |S 	 t	        | dd      5 }|j                         }ddd       |S # 1 sw Y   |S xY w# 1 sw Y   |S xY wc c}w # 1 sw Y   |S xY w# 1 sw Y   |S xY w# 1 sw Y   DxY w# t:        $ r"}t=        d| d|        d| d}Y d}~|S d}~ww xY w# t>        $ r
 d| d}Y |S t:        $ r%}t=        d| d| d|        d| d}Y d}~|S d}~ww xY w)u   
    Lê o conteúdo de um arquivo, tentando diferentes formatos (texto, PDF, Word, Excel, CSV, JSON).
    Retorna o conteúdo como string.
    r    z.txtrzutf-8)encodingNz.pdfr   rb
)z.docz.docx)z.xlsz.xlsx	z.csv,z.json   )indentzErro ao ler arquivo z como texto simples: u5   [ERRO: Não foi possível ler o conteúdo do arquivo ]z[ERRO: Arquivo u(    não encontrado no sistema de arquivos]z (z): ) r   r   splitextr
   openreadPyPDF2	PdfReaderrangelenpagesextract_textdocxDocument
paragraphstextopenpyxlload_workbook
sheetnames	iter_rowsvaluer   mapstrcsvreaderjsonloaddumpsr   printFileNotFoundError)r   r   file_extensioncontentfr,   r>   page_numr2   docparar6   workbook
sheet_namesheetrowcell
row_valuesr=   r?   dataes                         r   read_document_contentrR      s   
 WW%%h/288:NG/VV#iw7 #1&&(#^ N[ v%i& L!))!, %c&,,&7 8 LHv||H5BBDtKKGLLV NO 00--	*C ,499t++,H NE 00--i8H&11 J
 , ??, JC9<!W

@V$**!WJ!W!499Sj-A#BT#IIJJ> N3 v%iw7 41A! 4Csxx}t33G44. N' w&iw7 51yy|**T!*45" N_9cG< 'ffhG' N_#^ NWLV N9 "X
4. N#5" N' ' _-hZ7LQCPQRS[R\\]^ N_  W#H:-UV
 N	  V$XJb0@A3GHI(STUN	Vs	  K# I0K# "K# 7AI=K# <K# AK# J
/J
=K# )K# .K# 0J6K#  K# %J<K# J5 J)&J5 0I:5K# :K# =JK# K# JK# K# J&!K# &K# )J2.J5 5	K >KK# K  K# #L"5L"=LL")	r   werkzeug.utilsr   flaskr   r   r   r   rR    r   r   <module>rV      s#    	 * Z
9r   