o
    ްf                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	Z	d dl
mZ ddd	Zd
d Zdd Zdd Zdd Zdd Zdd ZdS )    N)Document)WD_ALIGN_PARAGRAPH)OxmlElement)qn)get_indicescenterc                 C   s4   | j }| }td}|td| || dS )z1Set the vertical alignment of text within a cell.zw:vAlignzw:valN)_tcget_or_add_tcPrr   setr   append)cellaligntctcPrvalign r   /home/ubuntu/flask/brown.pyset_cell_vertical_alignment
   s
   r   c                 C   s$   zt |  W dS  ty   Y dS w )NTF)int
ValueError)valr   r   r   is_convertible_to_int   s   r   c                    s   g d}g }g }d}d}|  d}|D ]V}|  t fdd|D rDt fdd|D rD|r<t|dkr<|| |g}d	}d}q|ri|| |d
7 }|dkri|rctdd |D rc|| g }d}d}q|rztdd |D rz|| |S )N)
ActivationFocusEffortEmotionMemoryActionzTotal CompositeFr   
c                 3   s    | ]}  |V  qd S N)
startswith.0labelrow_trimmedr   r   	<genexpr>'   s    z.extract_score_summary_table.<locals>.<genexpr>c                 3   s    | ]} |kV  qd S r   r   r!   r$   r   r   r&   '          T      c                 s       | ]}t |V  qd S r   r   r"   r   r   r   r   r&   3   r'   c                 s   r+   r   r,   r-   r   r   r   r&   9   r'   )splitstripanylenr   )textknown_labelspersistent_list	temp_listlabel_foundrow_count_since_last_labelrowsrowr   r$   r   extract_score_summary_table   s6   
,
r:   c                 C   s\   t | }g }|D ]}|d}t|}|r#|| |  |  S td q	|  |S )Nr2   zNo data found on this page.)fitzopenget_textr:   r   closeprint)pdf_pathdoc
all_tablespager2   
table_datar   r   r   extract_data_from_pdf>   s   



rE   c                    s  t | }t|d}ddg}| D ]d\}}|j|d  }|d }	|jdd  D ]M}
|
jd j  t fdd	|D rtt	t
|D ]1}t|	D ]*\}}|
j| }|| d  krdt|| ||  |_|jd }tj|_t|d
 qHqBq'qtjdkr|tjd| d S || d S )NBrownr(   r*   table_indexcolumnsr)   r   c                 3   s    | ]} |v V  qd S r   r   )r"   sublistkeyr   r   r&   a   r'   z)insert_table_into_word.<locals>.<genexpr>r   posixz/home/ubuntu/flask/files/)r   r   itemstablesr8   cellsr2   r/   r0   ranger1   	enumeratestr
paragraphsr   CENTER	alignmentr   osnamesavepathjoin)doc_pathdatafilenamerA   table_indicesbrown_index
table_nameinfotablecolumn_indicesr9   kicolumn_indexr   	paragraphr   rJ   r   insert_table_into_wordP   s.   



rh   c                 C   sN   d}d}| D ]}t |d }|dkr|d7 }q||krd}|S d| d}|S )	Nr      r(   K   r)   zZ[First Name] reported clinically significant scores about [Him/Her]self on all 6 clusters.zK[First Name] reported clinically significant scores about [Him/Her]self on z
 clusters.)r   )rN   significant_counttotal_clustersrb   t_scorereport_textr   r   r   generate_document_textr   s   ro   c                 C   s~   t jt}t j|d}t j|d}t|}d}|r'|D ]}td| qntd t| |d | t|d d d }|S )Nzfiles/Brown.pdfztesting.docxzExtracted Table:z&No tables extracted from the document.r   )	rV   rY   dirname__file__rZ   rE   r?   rh   ro   )filerq   r@   r[   rN   r]   rb   	brownTextr   r   r   rF      s   rF   )r   )rV   docxr   docx.enum.textr   	docx.oxmlr   docx.oxml.nsr   r;   hir   r   r   r:   rE   rh   ro   rF   r   r   r   r   <module>   s    
	%"