o
     gh                     @   s   d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlZd dlm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dS )    )requestjsonifysend_from_directoryflashredirecturl_forsession)api_bp)get_db_connectionclean_dataframe_dataN)secure_filenamez/filesGET)methodsc               
   C   s   t  } |  }zFz|dtd f | }t|dfW W |  |   S  tyM } ztddt| idfW  Y d }~W |  |   S d }~ww |  |   w )Nz/SELECT * FROM uploaded_files WHERE user_id = %suser_id   erroru@   파일 목록을 가져오는 중 오류가 발생했습니다:   )	r
   cursorexecuter   fetchallr   close	Exceptionstr)conncurfilese r   7/home/skpark/git/infrasmart_work/infrasmart/api/file.py	get_files   s    
&

r   z/download/<filename>c              
   C   sP   zt d| ddW S  ty' } ztddt| idfW  Y d }~S d }~ww )NuploadsT)as_attachmentr   u6   파일 다운로드 중 오류가 발생했습니다: r   )r   r   r   r   )filenamer   r   r   r   download_file   s   &r#   z/update_filePOSTc                  C   sP  t jd} t jd}t jdd}t jdd}t jdd}t jdd}t jd	d}z|r6t|nd}|r>t|nd}|rFt|nd}W n ttfy_   td
d tt	d Y S w dt j
v rt j
d }|jdkrz\t|}t|}t }	|	 }
|jddd}| r|  r|
d|||j|||||| f	 n|
dtd t|j|j|||||||f
 |	  |
  |	  tdd tt	dW S  ty } ztdt| d tt	dW  Y d }~S d }~ww n3| r|  rt }	|	 }
|
d||||||| f |	  |
  |	  tdd ntdd tt	dS )Nfile_idbridge_namestructure_type 
span_countr   lengthwidthexpansion_joint_location/   입력된 수치 값에 오류가 있습니다.r   indexfilerecordsF)orientforce_asciiaT  
                        UPDATE uploaded_files
                        SET bridge_name = %s, file_data = %s, original_filename = %s,
                            structure_type = %s, span_count = %s, length = %s, width = %s,
                            expansion_joint_location = %s
                        WHERE id = %s
                    a  
                        INSERT INTO uploaded_files 
                        (user_id, filename, original_filename, file_data, bridge_name,
                         structure_type, span_count, length, width, expansion_joint_location) 
                        VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
                        ON CONFLICT (user_id, filename) 
                        DO UPDATE SET file_data = EXCLUDED.file_data, bridge_name = EXCLUDED.bridge_name,
                            structure_type = EXCLUDED.structure_type, span_count = EXCLUDED.span_count,
                            length = EXCLUDED.length, width = EXCLUDED.width,
                            expansion_joint_location = EXCLUDED.expansion_joint_location
                    r   u3   파일이 성공적으로 업로드되었습니다.successu0   파일 처리 중 오류가 발생했습니다: z
                UPDATE uploaded_files
                SET bridge_name = %s, structure_type = %s, span_count = %s, 
                    length = %s, width = %s, expansion_joint_location = %s
                WHERE id = %s
            =   교량 정보가 성공적으로 업데이트되었습니다.'   필요한 정보를 입력해주세요.)r   formgetintfloat
ValueError	TypeErrorr   r   r   r   r"   pd
read_excelr   r
   r   to_jsonstripr   r   r   commitr   r   r   )r%   r&   r'   r)   r*   r+   r,   r/   dfr   r   	file_datar   r   r   r   update_file   s   






?

rC   z/update_bridge_infoc            	   
   C   s,  t jd} t jd}t jdd}t jdd}t jdd}t jdd}t jd	d}z|r6t|nd}|r>t|nd}|rFt|nd}W n ttfy]   td
dddf Y S w | r|  rt	 }|
 }|d||||||| f |  |  |  tddddfS td
dddfS )Nr%   r&   r'   r(   r)   r   r*   r+   r,   Fr-   )r3   r   i  z
            UPDATE uploaded_files
            SET bridge_name = %s, structure_type = %s, span_count = %s, 
                length = %s, width = %s, expansion_joint_location = %s
            WHERE filename = %s
        Tr4   )r3   messager   r5   )r   r6   r7   r8   r9   r:   r;   r   r?   r
   r   r   r@   r   )	r%   r&   r'   r)   r*   r+   r,   r   r   r   r   r   update_bridge_info   s6   
rE   )flaskr   r   r   r   r   r   r   apir	   utils.commonr
   r   pandasr<   werkzeug.utilsr   router   r#   rC   rE   r   r   r   r   <module>   s   $ 


k