o
    Xfv&                     @   s   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	Z	dddZ
d	d
 Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    )Document)WD_ALIGN_PARAGRAPH)OxmlElement)qnN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/woodcock.pyset_cell_vertical_alignment   s
   r   c           	      C   s   t | }|jd }i }g }d}d}|jds"td}|jd| |jdd  D ](}|jdr3d}|r?|	|j t
| |d d	krM|||d	 < g }|d7 }q)|S )
N   Fz.//w:tblGridz	w:tblGrid   READINGTr   )r   tables_elementxpathr   insert_cellstext
startswithr
   print)	filepathdoctabledatarowcollectitblGridr   r   r   r   extract_table_data   s(   

r'   c                 C   s   t | }|jd }|jdd  D ]?}|jd j}td| td| ||v rOttddg dD ]\}}|j| }	|| | |	_|	jd }
t	j
|
_t|	d q0qtjdkra|tjd	|}d S ||}d S )
N   r   r   keyr"   )r      r(   r   posix/home/ubuntu/flask/files/)r   r   rowscellsr   r   ziprange
paragraphsr   CENTER	alignmentr   osnamesavepathjoin)r7   r"   filenamer    r!   r#   r)   r%   content_indexr   	paragraph	save_pathr   r   r   insert_table_into_word.   s"   





r=   c                 C   sB   g dt | d d }d| d   krdkrn nd}|  | S )z3Convert an integer into its ordinal representation.)thstndrdr>   
   r(      d      r>   )min)numbersuffixr   r   r   ordinalL   s   rI   c                    s4   |   D ]\}}t fdd|D r|  S qdS )zCSearch through dictionary to find a key based on a value substring.c                 3   s*    | ]}t d t   d  |V  qdS )z\bN)researchescape).0valsearch_valuer   r   	<genexpr>W   s   ( z$find_key_by_value.<locals>.<genexpr>N)itemsany)r"   rP   r)   valuesr   rO   r   find_key_by_valueR   s
   rU   c                 C   s   | dkrdS d|   krdkrdS  d|   krdkrdS  d	|   kr)d
kr*dS  d|   kr5dkr6dS  d|   krAdkrDdS  dS dS )N   zvery superiorx      superiorn   w   zhigh averageZ   m   averageP   Y   zlow averageF   O   lowzvery lowr   )scorer   r   r   score_to_categoryZ   s$   re   c                 C   s\   d| j _| j}| }td}|tdd |tdd |tdd || | S )NzTimes New Romanzw:rFontszw:asciizw:hAnsiz
w:eastAsia)fontr5   r   get_or_add_rPrr   r	   r   r
   )runrrPrrFontsr   r   r   set_fontj   s   
rl   c              	   C   s  t | }i ddddddddd	d
dddddddddddddddddddddd d!d"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJ}i dKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdfdhdidjdk}tdl t| |jD ]5}|j}g }| D ]\}	\}
}||	dmdn  }t||}tdo|  tdp|  |rV|
|v rV|| | }tdq|	  dr|	v r ds|v s
t|dtk r|}| du}nt|}t	| du}dv}ndw|	v r(dx}ndy|	v r0dz}nt
t|| | }dv}tt|
|D ]}|| | ||f qEqtd{| |r|  dn}|  |D ]s\}}}}|dvkr|||| }t| || }t| d||_|}|dxkr|||| }t| ||  }t| d||_|}qk|dzkr|||| }t| ||  }t| d||_|}qk|||d  }t| qtjd}kr|tjd~|}d S ||}d S )NBR_DESC)z	[BR_DESC]r*   BR_PCT)z[BR_PCT]r(   BR_BOLD)z	[BR_BOLD]r   BM_DESC)z	[BM_DESC]r*   BM_PCT)z[BM_PCT]r(   BM_BOLD)z	[BM_BOLD]r   BRS_DESC)z
[BRS_DESC]r*   BRS_PCT)z	[BRS_PCT]r(   BRS_BOLD)z
[BRS_BOLD]r   BW_DESC)z	[BW_DESC]r*   BW_PCT)z[BW_PCT]r(   BW_BOLD)z	[BW_BOLD]r   RC_DESC)z	[RC_DESC]r*   RC_PCT)z[RC_PCT]r(   RC_BOLD)z	[RC_BOLD]r   LW_UL)z[LW_UL]r   LW_PCT)z[LW_PCT]r(   PC_UL)z[PC_UL]r   PC_PCT)z[PC_PCT]r(   SR_UL)z[SR_UL]r   SR_PCT)z[SR_PCT]r(   WA_UL)z[WA_UL]r   WA_PCT)z[WA_PCT]r(   AP_UL)z[AP_UL]r   AP_PCT)z[AP_PCT]r(   CA_UL)z[CA_UL]r   CA_PCT)z[CA_PCT]r(   MF_UL)z[MF_UL]r   MF_PCT)z[MF_PCT]r(   SP_UL)z[SP_UL]r   SP_PCT)z[SP_PCT]r(   WS_UL)z[WS_UL]r   WS_PCT)z[WS_PCT]r(   WF_UL)z[WF_UL]r   )z[WF_PCT]r(   )z[SW_UL]r   )z[SW_PCT]r(   )z[RR_UL]r   )z[RR_PCT]r(   )WF_PCTSW_ULSW_PCTRR_ULRR_PCTBRzBROAD READINGSRzSentence Reading FluencyLWzLetter-Word IdentificationPCzPassage ComprehensionBRSzBASIC READING SKILLSWAzWord AttackAPzApplied ProblemsCACalculationBMzBROAD MATHEMATICSMFzMath Facts FluencySPSpellingWSzWriting SamplesBWzBROAD WRITTEN LANGUAGESWzSentence Writing FluencyWFRCzReading ComprehensionRRReadingzhere is the data_r   zabbreviation z	full_key zkey: PCT<r   z percentileitalicBOLDboldUL	underlinezchanges:Tr+   r,   )r   r   r1   r   rR   splitrU   floatintrI   re   rJ   finditerrL   r
   startendsortclearadd_runrl   stripr   titler   r   r4   r5   r6   r7   r8   )template_pathr"   r9   r    placeholdersglossaryr;   original_textchangesr)   placeholderidxabbreviationfull_keydescriptionpercentile_valuetformatmlast_idxr   r   r   rh   
italic_runbold_runul_runr<   r   r   r   update_documentw   s\  	
 !"#*	








r   )r   )docxr   docx.enum.textr   	docx.oxmlr   docx.oxml.nsr   r4   rJ   r   r'   r=   rI   rU   re   rl   r   r   r   r   r   <module>   s    

