o
    nh                     @   s\  d dl mZmZmZmZmZ d dlmZ d dlZd dl	m
Z
 d dlZd dlmZ d dlZeedddZee d	Zh d
ZdZeejd< eejd< ejesTee g dZeD ]Zejesnee ede  qZdd Zeddd Zeddd Zejddgddd Zejddgddd  Zejd!dgdd"d# Z ejd$dgdd%d& Z!ejd'd(gdd)d* Z"ejd+dgdd,d- Z#ejd.dgdd/d0 Z$ed1kr,zd d2lm%Z%m&Z&m'Z' W n e(y   d3Z%d4Z&d5Z'Y nw ed6 ed7 ed8e%  ed9e&  ed:e'  ed;e  ed6 ej)e'e%e&d< dS dS )=    )Flaskrequestjsonify	send_filesend_from_directory)CORSN)secure_filename)datetimestatic	templates)static_foldertemplate_folderuploads>    7zdbgzjspyshapkbatcsscsvdlldocexegifinijpgmsipdfpngrarsqltartxtxlsxmlzipconfdocxhtmljpegjsonxlsxi  >UPLOAD_FOLDERMAX_CONTENT_LENGTH)zuploads/MIG_DAVID_GALLOzuploads/MIG_MAYORIAzuploads/MIG_SERVIEXPRESSzuploads/MIG_UPDATERu   ✓ Carpeta creada: c                 C   s    d| v o|  ddd  tv S )N.   )rsplitlowerALLOWED_EXTENSIONS)filename r7   /var/www/html/UpdaterMIG/app.pyallowed_file*   s    r9   /c                   C   s
   t ddS )Nr   z
index.htmlr   r7   r7   r7   r8   index.      
r<   z/static/<path:path>c                 C   s
   t d| S )Nr
   r;   )pathr7   r7   r8   send_static3   r=   r?   z	/api/listGET)methodsc            	      C   sN  zt jdd} tjt| }tj|stddidfW S g }t	|D ]]}z=tj||}tj
|}|s=tj|nd}ttj|d}|||rRdnd||tj| |d	d
d W q% ty } ztd| dt|  W Y d }~q%d }~ww t|| dW S  ty } ztdt|idfW  Y d }~S d }~ww )Nfolder errorzCarpeta no encontrada  r   z%Y-%m-%d %H:%M:%Sfile\r:   )nametypesizemodifiedr>   zError procesando : )itemscurrent_path  )r   argsgetosr>   joinr/   existsr   listdirisdirgetsizer	   fromtimestampgetmtimestrftimeappendreplace	Exceptionprintstr)	rB   r>   rM   item	item_pathis_dirrJ   rK   er7   r7   r8   
list_files8   s:   
 rd   z/api/create-folderPOSTc               
   C   s   z?t jdd} t| dd}| dd}|s tddidfW S tjt||}tj	|dd	 td
tj||
dddW S  ty[ } ztdt|idfW  Y d }~S d }~ww )NTforcerH   rC   parentrD   u   Nombre de carpeta inválido  )exist_okzCarpeta creada exitosamenterG   r:   )messager>   rO   )r   get_jsonr   rQ   r   rR   r>   rS   r/   makedirsr\   r]   r_   )datafolder_nameparent_pathnew_folder_pathrc   r7   r7   r8   create_folderY   s    
 rr   z/api/uploadc               
   C   s  zhdt jvrtddidfW S t jd } t jdd}| jdkr)tddidfW S | r`t| j}tj	t
|}tj|sBt| tj	||}| | td|tj	||d	d
dW S tddidfW S  ty } ztddt| idfW  Y d }~S d }~ww )NrF   rD   u   No se encontró el archivori   rB   rC   u!   No se seleccionó ningún archivozArchivo subido exitosamenterG   r:   )rk   r6   r>   zError al procesar el archivozError al subir archivo: rO   )r   filesr   formrQ   r6   r   rR   r>   rS   r/   rT   rm   saver\   r]   r_   )rF   rB   r6   upload_path	file_pathrc   r7   r7   r8   upload_filen   s0   






&rx   z/api/download/<path:filepath>c              
   C   st   zt jt| }t j|stddidfW S t|ddW S  ty9 } ztdt|idfW  Y d }~S d }~ww )NrD   zArchivo no encontradorE   T)as_attachmentrO   )	rR   r>   rS   r/   rT   r   r   r]   r_   )filepathrw   rc   r7   r7   r8   download_file   s    r{   z/api/deleteDELETEc               
   C   s   z:t jdd} | dd}tjt|}tj|s#tddidfW S tj	|r/t
| nt| tdd	iW S  tyV } ztdt|id
fW  Y d }~S d }~ww )NTrf   r>   rC   rD   zElemento no encontradorE   rk   zElemento eliminado exitosamenterO   )r   rl   rQ   rR   r>   rS   r/   rT   r   rV   shutilrmtreeremover]   r_   )rn   ra   	full_pathrc   r7   r7   r8   delete_item   s   
 r   z	/api/infoc                   C   s   t dddt  dS )N
UpdaterMIGz1.0online)serverversionstatus	timestamp)r   r	   now	isoformatr7   r7   r7   r8   server_info   s   
r   z/api/available-filesc            
      C   s  zmg } t tD ][\}}}|D ]S}z3t j||}t j|tdd}t j|}t	t j
| }| ||||d| d W q tyb }	 ztd| dt|	  W Y d }	~	qd }	~	ww qt| t| dW S  ty }	 ztdt|	id	fW  Y d }	~	S d }	~	ww )
NrG   r:   z/api/download/)rH   r>   rJ   rK   download_urlzError procesando archivo rL   )rs   totalrD   rO   )rR   walkr/   r>   rS   relpathr\   rW   r	   rX   rY   r   r[   r]   r^   r_   r   len)
	all_filesrootdirsrs   rF   rw   rel_pathrJ   rK   rc   r7   r7   r8   available_files   s6    r   __main__)HOSTPORTDEBUGz0.0.0.0b   Fz<============================================================u"   🚀 UpdaterMIG Server Starting...z	   Host: z	   Port: z
   Debug: z   Upload Folder: )debughostport)*flaskr   r   r   r   r   
flask_corsr   rR   werkzeug.utilsr   r-   r	   r}   __name__appr/   r5   r0   configr>   rT   rm   carpetas_migcarpetar^   r9   router<   r?   rd   rr   rx   r{   r   r   r   r   r   r   ImportErrorrunr7   r7   r7   r8   <module>   st    






 

 


	

