
    Cj              	         d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZmZ d dlmZmZmZ d dlmZ dd	lmZmZmZmZ dd
lmZ  ee                                          j        j        Zedz  Z e dz  Z!e!"                    dd            e
dd          Z#e#$                    d e e%edz  dz                      d           d4dZ&e#'                    de          d5d            Z(e#'                    d          d6d!            Z)e#*                    d"          d7d&            Z+e#*                    d'          	 	 	 d8d9d1            Z,e#*                    d2          d:d;d3            Z-dS )<    )annotationsN)Path)	Annotated)FastAPIFileFormHTTPException
UploadFile)FileResponseHTMLResponseJSONResponse)StaticFiles   )DEFAULT_TEMPLATEfill_templateparse_values_jsonvalues_to_csv)extract_pdfdatajobsTparentsexist_okzSmileys Evaluation Webappz1.0.0)titleversionz/staticappstatic)	directory)namejob_idstrreturnr   c                    d                     d | D                       }|st          dd          t          |z  }|                    dd           |S )N c              3  J   K   | ]}|                                 s|d v |V  dS )z-_N)isalnum).0chs     6/home/gmu/.Hermes/workspace/smileys_webapp/app/main.py	<genexpr>zjob_dir.<locals>.<genexpr>   s3      EE""**,,E"**2****EE      u   Ungültige job_idstatus_codedetailTr   )joinr	   JOBS_DIRmkdir)r    safepaths      r)   job_dirr5      sc    77EEEEEEED I4GHHHHd?DJJtdJ+++Kr+   /)response_classc                 J    t           dz  dz  dz                      d          S )Nr   r   z
index.htmlutf-8encoding)BASE_DIR	read_text r+   r)   indexr?   "   s(    ux',6AA7ASSSr+   z/healthdict[str, str | bool]c                 T    dt          t                    t          j                    dS )NT)okdefault_templatetemplate_exists)r!   r   existsr>   r+   r)   healthrF   '   s%    C0@,A,AVfVmVoVopppr+   z/api/extractpdfGAnnotated[UploadFile, File(description='Eingescannter Bewertungs-PDF')]r   c                f  K   | j                                                             d          st          dd          t	          j                    j        }t          |          }|dz  }|                    d          5 }t          j
        | j        |           d d d            n# 1 swxY w Y   	 t          ||dz            }n'# t          $ r}t          d	d
|           |d }~ww xY w||d<   |dz                      t          j        |dd          d           t#          |          S )Nz.pdfr,   zBitte eine PDF-Datei hochladen.r-   z
upload.pdfwbpages)
render_dir  zPDF-Auswertung fehlgeschlagen: r    zextraction.jsonF   )ensure_asciiindentr9   r:   )filenamelowerendswithr	   uuiduuid4hexr5   openshutilcopyfileobjfiler   	Exception
write_textjsondumpsr   )rG   jidjdpdf_pathfr   excs          r)   api_extractrd   ,   s     <((00 W4UVVVV
*,,
C	BL H	t		 (38Q'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (f8W=== f f f4[VY4[4[\\\beefDN
''
4eTU(V(V(Vah'iiis*   B((B,/B,4C	 	
C-C((C-z/api/generatexlsvalues_jsonBAnnotated[str, Form(description='JSON array [questionnaire][15]')]output_formatAnnotated[str, Form()]template$Annotated[UploadFile | None, File()]Annotated[str | None, Form()]r   c                j  K   	 t          |           }n1# t          $ r$}t          dt          |                    |d }~ww xY w|pt	          j                    j        }t          |          }d }|r|j        r|j        	                                
                    d          st          dd          |dt          |j                  j        	                                 z  }|                    d          5 }	t          j        |j        |	           d d d            n# 1 swxY w Y   	 t#          ||||          }
t%          ||dz             n'# t          $ r}t          d	d
|           |d }~ww xY w|
j        	                                dk    rdnd}t'          |
||
j                  S )Nr,   r-   ).xlsz.xlsxz#Template muss .xls oder .xlsx sein.rj   rJ   )template_pathrh   korrigierte_werte.csvrM   z!Excel-Erstellung fehlgeschlagen: rn   zapplication/vnd.ms-excelzAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
media_typerQ   )r   r[   r	   r!   rT   rU   rV   r5   rQ   rR   rS   r   suffixrW   rX   rY   rZ   r   r   r   r   )rf   rh   rj   r    valuesrc   r_   r`   ro   rb   outmedias               r)   api_generaterw   >   s-     G";// G G GCHH===3FG 
$DJLL$C	B!%M 1H% 1 &&((112CDD 	_C8]^^^^PX->(?(?(F(L(L(N(NPPP%% 	1x}a000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1hFBmS`aaafb#::;;;; h h h4]X[4]4]^^^dggh +.**:*:*<*<*F*F&&  MPEAAAAs<    
A=A<D##D'*D'/&E 
E: E55E:z/api/export-csvc                ,  K   	 t          |           }n1# t          $ r$}t          dt          |                    |d }~ww xY wt	          |pt          j                    j                  }t          ||dz            }t          |d|j
                  S )Nr,   r-   rp   ztext/csvrq   )r   r[   r	   r!   r5   rT   rU   rV   r   r   r   )rf   r    rt   rc   r`   ru   s         r)   api_export_csvry   ^   s      G";// G G GCHH===3FG	+4:<<+	,	,B
%< <
=
=C
SXFFFFs    
A=A)r    r!   r"   r   )r"   r!   )r"   r@   )rG   rH   r"   r   )re   NN)
rf   rg   rh   ri   rj   rk   r    rl   r"   r   )N)rf   ri   r    rl   r"   r   ).
__future__r   r]   rX   rT   pathlibr   typingr   fastapir   r   r   r	   r
   fastapi.responsesr   r   r   fastapi.staticfilesr   excel_writerr   r   r   r   	extractorr   __file__resolveparentr<   DATA_DIRr1   r2   r   mountr!   r5   getr?   rF   postrd   rw   ry   r>   r+   r)   <module>r      s   " " " " " "                B B B B B B B B B B B B B B F F F F F F F F F F + + + + + + [ [ [ [ [ [ [ [ [ [ [ [ " " " " " "4>>!!##*1ff td + + +g/AAA 		)[[33x%/?(/J+K+KLLLS[	 \ \ \    \**T T T +*T q q q q .   " / -259,0	B B B B B> 
G G G G G G Gr+   