
    ajN6                       % S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSK	J
r
Jr  SSKJrJrJrJrJr  \R$                  " \5      r\S   rS	rS
\S'   \" S \ 5       5      r\" S \ 5       5      rSS jrSS jrSS jrS S jrSS.           S!S jjrS"S jr S#S jr!            S$S jr" S%     S&S jjr#S'S jr$S'S jr%Sr&S'S jr'g)(zNRelleno de family_report.docx ministerial con tablas planas (sin campos Word).    )annotationsN)deepcopy)Path)AnyLiteral)_KEY_ALIASES_NARRATIVE_SLOT_KEYS_get_cell_element_iter_cell_paragraphs_resolve_replacement)replaceappend)!)      r   student_full_namer   )r   r   r   student_identification_numberr   )r      r   student_social_namer   )r   r   r   student_birth_dater   )r      r   student_ager   )r   r   r   student_courser   )r   r      student_schoolr   )r   r   r   professional_full_namer   )r   r      "professional_identification_numberr   )r   r   r   professional_social_namer   )r   r   r   professional_job_positionr   )r   r   r   professional_phoner   )r   r   r   professional_emailr   )r   r   r   "professional_delivered_date_informr   )r   
   r   person_full_namer   )r   r#   r   person_identification_numberr   )r      r   receiver_social_namer   )r   r&   r   person_phoner   )r      r   person_emailr   )r   r   r   applied_instrumentsr   )r   r   r   
diagnosticr   )r      r   pedagogical_strengthsr   )r   r-   r   pedagogical_support_needsr   )r   r#   r   social_affective_strengthsr   )r   r#   r   social_affective_support_needsr   )r   r&   r   collaborative_workr   )r   r)   r   home_based_descriptionr   )r      r   school_family_agreementsr   )r      r   evaluation_date_1r   )r   r6   r   evaluation_date_2r   )r   r6      evaluation_date_3r   )r   r6   r-   evaluation_date_4r   )r   r6   	   evaluation_date_5r   /tuple[tuple[int, int, int, str, FillMode], ...]FAMILIA_TABLA_SLOTSc              #  :   #    U  H  oS    S;   d  M  Uv   M     g7f)r   )r   r   N .0ss     ]C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\utils\familia_report_tabla_fill.py	<genexpr>rF   ;   s     *\6IqTU[^116I   	c              #  :   #    U  H  oS    S:X  d  M  Uv   M     g7f)r   r   NrA   rB   s     rE   rF   rF   <   s     %R1DA!PQ	aa1DrG   c                `    SSK Jn  SSKJn  U" [	        U 5      5      n[        UR                  R                  R                  U" S5      5      5      (       a  gUR                  R                  R                  U" S5      5       H(  nUR                  (       d  M  SUR                  ;   d  M(    g   UR                  R                  R                  U" S5      5      n[        U5      S	:w  a  gS
R                  S US   R                  U" S5      5       5       5      nSU;   $ ! [         a     gf = f)z<Plantilla ministerial actual: 5 tablas, sin SDT ni FORMTEXT.r   Documentqnzw:sdtFzw:instrTextFORMTEXTw:tblr    c              3  J   #    U  H  oR                   =(       d    S v   M     g7frP   NtextrC   ts     rE   rF   4docx_is_familia_ministerial_tabla.<locals>.<genexpr>N   s     G/F!2/F   !#r   w:tu   IDENTIFICACIÓN DEL ESTUDIANTE)docxrK   docx.oxml.nsrM   stranyelementbodyiterrT   findalllenjoin	Exception)pathrK   rM   docinstrtblsheaders          rE   !docx_is_familia_ministerial_tablarj   ?   s    !#s4y!s{{$$R[122[[%%**2m+<=EzzzjEJJ6 > {{''74t9>GtAw||BuI/FGG/699 s0   AD  =D  D  ,D  .<D  +4D   
D-,D-c                \    SR                  S U R                  U" S5      5       5       5      $ )NrP   c              3  J   #    U  H  oR                   =(       d    S v   M     g7frR   rS   rU   s     rE   rF   "_paragraph_text.<locals>.<genexpr>U   s     >)=A66<R<)=rX   rY   )rc   r`   )p_elrM   s     rE   _paragraph_textro   T   s$    77>2e9)=>>>    c                z    [        U 5       H,  nUR                  U" S5      :X  d  M  U R                  U5        M.     g )Nw:r)listtagremove)rn   rM   childs      rE   _clear_paragraph_runsrw   X   s,    d995	!KK rp   c                6   U" S5      nUb  UR                  [        U5      5        U" S5      nXl        UR                  S5      (       d  UR	                  S5      (       a  UR                  U" S5      S5        UR                  U5        U R                  U5        g )Nrr   rY    z	xml:spacepreserve)r   r   rT   
startswithendswithset)rn   rT   rM   OxmlElementref_r_prrwts          rE   _append_run_textr   ^   sw    EA	(#$	U	BGst}}S11
r+
+HHRLKKNrp   r   modec               z   U=(       d    SR                  5       nU(       d  gU R                  U" S5      5      nS nU(       aH  US   R                  U" S5      5       H*  nUR                  U" S5      5      n	U	c  M  [	        U	5      n  O   US:X  a  U(       a  [        US   U5      R                  5       n
U
(       af  S nUSS   H%  n[        X5      R                  5       (       a  M#  Un  O   Uc  U" S5      nU R                  U5        O[        X5        [        XX#U5        g	U(       aT  [        US   U5      R                  5       nU(       a0  [        U5      (       d   [        US   U5        [        US   XRX75        g	U H  nU R                  U5        M     U" S5      n[        XX#U5        U R                  U5        g	)
NrP   Fw:pr   rr   zw:rPrr   r   T)stripra   r`   findr   ro   r   rw   r   _is_label_likeru   )tc_elvaluerM   r~   r   rT   
paragraphsr   r   rprlabeltargetrn   existingnew_ps                  rE   _set_cell_plain_textr   j   s    KR Dr%y)JHA##BuI.A&&G%C#C=	 / xJ
1r288:F"12&t06688!F ' ~$U+V$%f1V2HE ":a="5;;=N844!*Q-4Z]DkLT EU"8<	LLrp   c                    SSK Jn  SnU R                  U" S5      5       HQ  n[        XA5      R	                  5       nU(       a  U" U5      (       d  M2  [        U5      (       a  MD  [        XA5        SnMS     U$ )Nr   )_paragraph_has_placeholderFr   T)(app.backend.utils.familia_report_prefillr   ra   ro   r   r   rw   )r   rM   r   changedrn   fulls         rE   _clear_cell_placeholder_textr      sg    SGbi(t(..05d;;$d' ) Nrp   c                    U  Vs/ s H  oR                  5       (       d  M  UPM     nn[        U5      S:  a  g[        S U 5       5      nU[        U5      -  S:  $ s  snf )Nr   Tc              3  R   #    U  H  oR                  5       (       d  M  S v   M     g7f)r   N)isupper)rC   cs     rE   rF   !_is_label_like.<locals>.<genexpr>   s     27aiik7s   '	'g      ?)isalpharb   sum)rT   r   lettersuppers       rE   r   r      sT    .$Q))+q$G.
7|a2722ECL D((	 /s
   AAc           	     H   [        5       n/ nU H  u  pxpnXxU	4nX;   a  M  UR                  U5        [        XXU5      nUc  M5  [        X5      nU(       a%  [	        XX4US9(       a  UR                  U
5        Mj  Ml  [        X5      (       d  M~  UR                  U
5        M     U$ )Nr   )r}   addr
   r   r   r   r   )rf   slotsreplacementsrM   r~   seenfilled_keys	table_idxrow_idxcol_idxkeyr   slotr   r   s                  rE   _fill_tabla_slot_rowsr      s     '*eDK27.	G$G,<!#'BG=$S7#E"M""3' N ,E66""3' 38 rp   c                :   SSK Jn  SSKJn  SSKJn  SSKJnJn  U" [        U 5      5      nU" U5      u  pU(       a  SO
U	(       a  SOSn
U
c  g[        US	SX5      nUc  gUR                  U" S
5      5       H  nUR                  (       d  M  SUR                  ;   a>  UR                  R                  SUS5      Ul        UR                  [        U 5      5          gUR                  R                  5       SSU4;   d  M    g   UR                  [        U 5      5        g)uG   Marca ingreso o reevaluación reemplazando ☐ por x en la fila MOTIVO.r   rJ   r~   rL   )FAMILIA_CHECKBOX_CHECKED_MARK_evaluation_type_flagsr   r   Nr   rY   u   ☐xX)rZ   rK   	docx.oxmlr~   r[   rM   r   r   r   r\   r
   r`   rT   r   saver   )	docx_pathstudent_contextrK   r~   rM   r   r   rf   is_admission	is_reevalcolr   r   s                rE   #fix_familia_motivo_evaluacion_tablar      s    
 %
 3y>
"C4_EL!y!dC
{c1a1E}jjE#wwBGGggooe-JANBGHHS^$77==?sC)FGG $ HHS^rp   c                |   SSK Jn  SSKJn  SSKJn  SSKJn  U" [        U 5      5      n[         VVVV	V
s1 s H  u  pgpn
U
S:X  d  M  XgU4iM     nn	nnnn
[         H  u  pgpn[        XVXxU5      nUc  M  XgU4U;   n[        [        X5      5       H  u  nnU(       a  US:X  a  M  UR                  U" S5      5       HR  nUR                  U" S5      5      nUc  M  UR                  =(       d    S	R!                  5       (       d  MI  U" UX25        MT     M     M     UR#                  [        U 5      5        g s  sn
n	nnnf )
Nr   rJ   r   rL   )_apply_arial_10_to_runr   rr   rY   rP   )rZ   rK   r   r~   r[   rM   r   r   r\   r?   r
   	enumerater   r`   r   rT   r   r   )r   rK   r~   rM   r   rf   r   r   r   _keyr   append_slots_moder   
skip_firstpirn   r   r   s                      rE   apply_familia_arial_10_to_tablar      s   %O
3y>
"C 8K7J3It8 	&W%7J   5H0	G5!#'BG='2lB
!"7"BCHBbAgYYr%y)VVBuI&>rww}"&;&;&=&=*1b> * D 5H HHS^'s   D5D5c                  ^" SSK Jn  SSKJn  SSKJm"  SSKJnJnJ	nJ
n  U" [        U 5      5      n[         VV	V
VVs1 s H  u  ppnUS:X  d  M  XU
4iM     nnn
n	nn[         VVVVVs1 s H  u  pnnnU[        ;   d  M  XU4iM     nnnnnnU GH2  u  pn
[        XxXT"5      nUc  M  UR                  T"" S5      5      nU(       d  M9  XU
4U;   n[!        U5       VVs/ s H  u  nnU(       a  US:X  a  M  UPM     nnn/ nSnU H  n[#        UT"5      R%                  5       nU(       a  U" U5      (       a  M3  ['        U"4S	 jUR                  T"" S
5      5       5       5      (       a  SnUR)                  U" UT"5      5        M~  [*        R,                  " SU5       H-  nUR%                  5       nU(       d  M  UR/                  U5        M/     M     U(       aE  [1        U5      S:  d  U(       a/  U H  nUR3                  U5        M     U H  nU" UUT"US 5        M     [!        UR                  T"" S5      5      5       H  u  n nU(       a  U S:X  a  M  [#        UT"5      R%                  5       nU(       a  U" U5      (       a  ME  UR5                  T"" S5      5      n!U!c  U" S5      n!UR7                  SU!5        U" U!T"U5        M     GM5     UR9                  [        U 5      5        g s  snnn
n	nf s  snnnnnf s  snnf )Nr   rJ   r   rL   )_append_narrative_paragraph!_apply_narrative_paragraph_format_is_label_paragraph_split_paragraph_segmentsr   r   Fc              3  T   >#    U  H  oR                  T" S 5      5      SLv   M     g7f)zw:brN)r   )rC   r   rM   s     rE   rF   2compact_familia_tabla_narrative.<locals>.<genexpr>?  s#     S;Ra66"V*%T1;Rs   %(rr   Tz\n\s*\nr   w:pPr)rZ   rK   r   r~   r[   rM   r   r   r   r   r   r\   r?   r	   r
   ra   r   ro   r   r]   extendresplitr   rb   ru   r   insertr   )#r   rK   r~   r   r   r   r   rf   r   r   r   r   r   r   tiricir   r   narrative_slotsr   r   
skip_labelipbody_paragraphssegmentshas_brrn   rT   blocksegr   pprrM   s#                                     @rE   compact_familia_tabla_narrativer     s   %  3y>
"C 8K7J3It8 	&W%7J   ':&9"BBU&& 	&9   (7#	G!#'BG=]]2e9-
'2lB
#J/
/$!Q
qAvA/ 	 
 !#D"4,224D.t44S4<<5	;RSSS 9$ CDXXj$7E!KKMEu . 8 $ X*f'T" (+E3KN   "%--5	":;HBbAg"4,224D.t44))BwK(C{!'*As#-c2{C <E (7\ HHS^s

s#   K"K")K+ K+K46K4)r   r   r-   r#   r&   r)   r4   r6   c           
     
   SSK Jn  SSKJn  SSKJn  SSKJn  [        U 5      (       d  gU" [        U 5      5      nUR                  R                  R                  U" S5      5      n[        U5       GH  u  pxUR                  U" S5      5       HW  n	U	R                  U" S	5      5      n
U
c  M  [        U
R                  U" S
5      5      5       H  nU
R!                  U5        M     MY     US:X  a  UR                  U" S5      5      n["         H  nU[%        U5      :  a  M  X   R                  U" S	5      5      n
U
b8  [        U
R                  U" S5      5      5       H  nU
R!                  U5        M     X   R                  U" S5      5       HW  nUR                  U" S5      5      nUc  M  [        UR                  U" S5      5      5       H  nUR!                  U5        M     MY     M     UR'                  U" S5      5       H^  nUR                  U" S5      5       H@  nUR                  U" S5      5      nUc  U" S5      nUR)                  SU5        U" UX25        MB     M`     GM     UR+                  [        U 5      5        g)u   
Permite que el contenido narrativo fluya entre páginas sin huecos en blanco:
quita keepNext/keepLines/pageBreakBefore, cantSplit y alturas fijas de fila.
r   rJ   r   rL   )!_clear_paragraph_pagination_locksNrO   zw:trzw:trPrzw:cantSplitr   z
w:trHeightzw:tczw:tcPrzw:vAlignr   r   )rZ   rK   r   r~   r[   rM   r   r   rj   r\   r^   r_   ra   r   r   rs   ru   #FAMILIA_TABLA_NARRATIVE_ROW_INDICESrb   r`   r   r   )r   rK   r~   rM   r   rf   rh   tbl_idxtbl_eltr_eltr_prelrowsr   r   tc_prrn   r   s                     rE   relax_familia_tabla_layoutr   a  s   
 %Z,Y77
3y>
"C;;##BwK0D$T?^^BvJ/EJJr(|,E u}}R->?@BLL$ A 0 a<>>"V*-D>c$i'**2h<8$"5==L1A#BCR( D!]222f:>E!JJr(|4E} "5==J#@AR( B	 ? ? [[F,Ebi0ii7,;%g.CKK3'1#rG 1 -/ +> HHS^rp   )re   r   returnbool)rn   r   rM   r   r   r\   )rn   r   rM   r   r   None)rn   r   rT   r\   rM   r   r~   r   r   z
Any | Noner   r   )r   r   r   r\   rM   r   r~   r   r   FillModer   r   )r   r   rM   r   r   r   )rT   r\   r   r   )rf   r   r   r>   r   zdict[str, str]rM   r   r~   r   r   z	list[str])N)r   r   r   zdict[str, Any] | Noner   r   )r   r   r   r   )(__doc__
__future__r   loggingr   copyr   pathlibr   typingr   r   )app.backend.utils.familia_report_formtextr   r	   r
   r   r   	getLogger__name__loggerr   r?   __annotations__tuple"FAMILIA_TABLA_IDENTIFICATION_SLOTSFAMILIA_TABLA_NARRATIVE_SLOTSrj   ro   rw   r   r   r   r   r   r   r   r   r   r   rA   rp   rE   <module>r      sV   T "  	     
		8	$&'"H D "H &+*\6I*\%\ " %%R1D%R R *?	$ 222 	2 	2 2 
2j)	: ! 		
  : .2""*" 
"J<FT 'D #0rp   