
    U+ip                        d Z ddlmZ ddlZddlmZ ddlmZmZmZ ddl	m
Z
mZ ddlmZ ddlmZ dd	lmZmZmZmZ dd
ZddZ G d d      Zy)uI   Lógica para dynamic_forms (formularios dinámicos con definición JSON).    )annotationsN)datetime)AnyListOptional)casedesc)Session)notify_guardians_for_form)DynamicFormModelDynamicFormSubmissionModelStudentGuardianModelStudentPersonalInfoModelc                z    | yt        | t              r| S t        | d      r| j                         S t        |       S )N 	isoformat)
isinstancestrhasattrr   )vs    O/var/www/pie360backend.cl/public_html/app/backend/classes/dynamic_form_class.py_iso_dtr      s8    y!Sq+{{}q6M    c           
        	 | j                   rt        j                  | j                         ng }t        |t              sg }| j                  | j                  xs d| j                  xs dj                         || j                  | j                  t        | j                        t        | j                        dS # t        j
                  t        f$ r g }Y w xY w)Nr   )idnamedescriptionfieldscourseId
periodYear	createdAt	updatedAt)fields_jsonjsonloadsr   listJSONDecodeError	TypeErrorr   r   r   strip	course_idperiod_yearr   
added_dateupdated_date)rowr   s     r   _row_to_apir/      s    03COO,R&$'F ffB-2446MMooS^^,S--.	 	   ), s   ?B: :CCc                     e Zd Zdd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"d
Z	 	 	 	 	 d#	 	 	 	 	 	 	 	 	 	 	 d$dZdd%dZd&dZd'dZd(dZdd%dZ	 d	 	 	 	 	 	 	 d)dZd*dZd+dZ	 d	 	 	 	 	 	 	 	 	 d,dZ	 	 d-	 	 	 	 	 	 	 	 	 	 	 d.dZ	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/dZ	 d	 	 	 	 	 	 	 	 	 d0dZ	 d	 	 	 	 	 	 	 	 	 d1dZ	 d	 	 	 	 	 	 	 	 	 	 	 d2dZy)3DynamicFormClassc                    || _         y N)db)selfr4   s     r   __init__zDynamicFormClass.__init__3   s	    r   Nc                ,   | j                   j                  t              j                  t        j                  j                  d             }|"|j                  t        j                  |k(        }|"|j                  t        j                  |k(        }|S r3   )r4   queryr   filterdeleted_dateis_	school_idr+   )r5   r<   r+   qs       r   _base_queryzDynamicFormClass._base_query6   sx    GGMM*+223C3P3P3T3TUY3Z[ )33y@AA")55DEAr   c                L   | j                   j                  t              j                  t        j                  |k(        j                  t        t        j                              j                         }|r|j                  sy t        |j                        j                         S r3   )r4   r8   r   r9   
student_idorder_byr	   r   firstcelphoner   r)   )r5   r@   gs      r   _guardian_cellzDynamicFormClass._guardian_cell>   sp    GGMM./V(33zABXd/2234UW	 	
 

1::$$&&r   c                   | j                   j                  t              j                  t        j                  |k(        j                         }|sy|j                  xs dj                         |j                  xs dj                         |j                  xs dj                         g}dj                  d |D              j                         S )Nr    c              3  &   K   | ]	  }|s|  y wr3    .0xs     r   	<genexpr>z9DynamicFormClass._student_display_name.<locals>.<genexpr>R   s     .aA.   )r4   r8   r   r9   r@   rB   namesr)   father_lastnamemother_lastnamejoin)r5   r@   ppartss       r   _student_display_namez&DynamicFormClass._student_display_nameI   s    GGMM23V,77:EFUW 	

 ''-R&&(1+<+<+B*I*I*KaN_N_NeceMlMlMnoxx.5..4466r   c                    |j                  d      }||j                  d      }|y t        |t              sy g }|D ]  }	 |j                  t	        |              |S # t
        t        f$ r Y 3w xY w)NnotifyStudentIdsnotify_student_ids)getr   r&   appendintr(   
ValueError)r5   datanidsoutrL   s        r   _parse_notify_idsz"DynamicFormClass._parse_notify_idsT   s    xx*+<8801D<$% 	A

3q6"	
 
 z* s   AA10A1c                    |j                  d      }||j                  d      }||dk(  ry 	 t        |      S # t        t        f$ r Y y w xY w)Nr   r*   r   rY   r[   r(   r\   )r5   r]   cids      r   _parse_course_idz!DynamicFormClass._parse_course_idd   sV    hhz";((;'C;#)	s8O:& 		   
9 A
Ac                    |j                  d      }||j                  d      }||dk(  ry 	 t        |      S # t        t        f$ r Y y w xY w)Nr    r+   r   rb   )r5   r]   r   s      r   _parse_period_yearz#DynamicFormClass._parse_period_yearo   sV    HH\"9'A9R	q6M:& 		re   c                T     |sy d fd}d fd}t         j                  ||||      S )Nc                .    j                  |       xs dS )N
Estudiante)rU   sidr5   s    r   labelz4DynamicFormClass._run_whatsapp_notify.<locals>.label~   s    --c2BlBr   c                &    j                  |       S r3   )rE   rk   s    r   phonez4DynamicFormClass._run_whatsapp_notify.<locals>.phone   s    &&s++r   )rl   r[   returnr   )rl   r[   rp   Optional[str])r   r4   )r5   student_ids	form_namerm   ro   s   `    r   _run_whatsapp_notifyz%DynamicFormClass._run_whatsapp_notifyz   s.    	C	, )+y%QVWWr   c           	     P   	 ddl m} ddlm} |}|rW|sU || j                        j                  d|      }t        |t              r"t        |      dkD  r|d   j                  d      } || j                        j                  dd|||      }	t        |	t              r*|	j                  d      d	k(  rd	|	j                  d
d      g dS t        |	t              r|	ng }
g }|
D ]  }|j                  d      }||j                  d      xs i }|j                  d      xs dj                         }|j                  d      xs dj                         }|j                  d      xs dj                         }dj                  d |||fD              }|j                  d      xs |j                  d      xs dj                         }| j                  j                  t              j                  t        j                   |k(        j#                  t%        t        j&                              j)                         }d}d}|r|j*                  xs dj                         }|j,                  xs dj                         }|j.                  xs dj                         }dj                  d |||fD              }|j0                  xs dj                         }|j3                  ||xs d|xs d|xs d|xs dd        d|dS # t4        $ r}d	t7        |      g dcY d}~S d}~ww xY w)zCEstudiantes del curso con apoderado y celular (para UI checkboxes).r   )SchoolClass)StudentClass)pagecustomer_idr   i  )rx   items_per_pager<   r*   r+   statuserrormessageErrorr{   r}   r]   Npersonal_datarO   r   rP   rQ   rG   c              3  &   K   | ]	  }|s|  y wr3   rI   rJ   s     r   rM   z9DynamicFormClass.get_course_recipients.<locals>.<genexpr>   s     @aa@rN   identification_numberc              3  &   K   | ]	  }|s|  y wr3   rI   rJ   s     r   rM   z9DynamicFormClass.get_course_recipients.<locals>.<genexpr>   s     %CAa%CrN      —)	studentIdstudentName
studentRutguardianNameguardianPhonesuccessr{   r]   ) app.backend.classes.school_classrv   !app.backend.classes.student_classrw   r4   get_allr   r&   lenrY   dictr)   rR   r8   r   r9   r@   rA   r	   r   rB   rO   rP   rQ   rC   rZ   	Exceptionr   )r5   r*   r<   ry   r+   rv   rw   resolved_schoolschools_listrawstudentsr_   strl   pdrO   flmlfullrutrD   g_nameg_phonegngfgmes                              r   get_course_recipientsz&DynamicFormClass.get_course_recipients   s   ;	FDF'O?*4773;;P[;\lD1c,6G!6K&21o&9&9$&?Otww'//#)#' 0 C #t$):g)E")cggi6Q[]^^(d3sH C "ffTl;VVO,2.B557ff./52<<>ff./52<<>xx@E2r?@@vv56_"&&AX:Y_]_ffh GGMM"67V0;;sBCXd#7#:#:;<UW	  ''-R..0B++1r88:B++1r88:B XX%C"b"%CCF zz/R668G

%('+}u&)lU(.%)0)9E5"F (55 	F%#a&"EE	Fs%   CL 	H9L 	L%L L% L%c                   	 | j                  ||      }|r{t        |      j                         rbd|j                          d}|j                  t        j
                  j                  |      t        j                  j                  |      z        }|j                  t        t        j                  j                  d      dfd      t        j                  j                               }|dkD  r|dkD  r|j                         }||z   dz
  |z  xs d}	|dk  s||	kD  r||	||g dS |j                  |dz
  |z        j                  |      j!                         }
|
D cg c]  }t#        |       }}||	|||dS |j!                         }
|
D cg c]  }t#        |       c}S c c}w c c}w # t$        $ r}dt        |      g dcY d}~S d}~ww xY w)	ul   Lista formularios activos. page=0 sin paginación (como support_areas). Filtra por period_year si se indica.%N   r   )else_)total_itemstotal_pagescurrent_pagerz   r]   r|   r   )r>   r   r)   r9   r   r   liker   rA   r   r-   r;   r	   countoffsetlimitallr/   r   )r5   rx   rz   searchr<   r+   r8   sr   r   rowsrr]   r   s                 r   r   zDynamicFormClass.get_all   s   "	F$$Y<E#f+++-'q)%**//27G7S7S7X7XYZ7[\ NN&3377=qAK --224E axNQ.#kkm*^;a?NRWVW!8tk1'2'2(,*8 "  ||TAX$?@FF~VZZ\0451A55#.#.$(&4   99;D,01qKN11 6 2 	F%#a&"EE	FsH   D!F+ $8F+ F!.	F+ 8F+ F&F+ !
F+ +	G4GGGc                   	 | j                   j                  t              j                  t        j                  |k(  t        j
                  j                  d             }|"|j                  t        j                  |k(        }|"|j                  t        j                  |k(        }|j                         }|sddd dS dt        |      dS # t        $ r}dt        |      d dcY d }~S d }~ww xY w)Nr|   Registro no encontrado.r   r   r   )r4   r8   r   r9   r   r:   r;   r<   r+   rB   r/   r   r   r5   r   r<   r+   r=   r.   r   s          r   rY   zDynamicFormClass.get   s    	H./66 ##r) --11$7A $HH-779DE&HH-99[HI'')C")6OY]^^'S1ABB 	H%#a&$GG	Hs$   B<C ?C 	C/C*$C/*C/c                    g }|D ]R  }t        |d      r"|j                  |j                  d             1t        |t              sB|j                  |       T t        j                  |d      S )N
model_dumpT)by_aliasFensure_ascii)r   rZ   r   r   r   r$   dumps)r5   r   r_   fs       r   _fields_to_jsonz DynamicFormClass._fields_to_json	  s_     	Aq,'

1<<<67At$

1		
 zz#E22r   c                   	 |j                  d      xs dj                         }|sdddS |j                  d      xs g }t        |t              rt	        |      dk(  rdddS t        j                         }|j                  d	      xs dj                         xs d }| j                  |      }| j                  |      }||d
k  rdddS | j                  |      }	|	dddS t        |||	|||||d 	      }
| j                  j                  |
       | j                  j                          | j                  j                  |
       | j                  |      }d }| t	        |      dkD  r| j!                  ||      }dd|
j"                  |dS # t$        $ r2}| j                  j'                          dt)        |      dcY d }~S d }~ww xY w)Nr   r   r|   zEl nombre es obligatorio.r{   r}   r   r   Debe incluir al menos un campo.r   r   z*Debe indicar un curso asociado (courseId)..   Debe indicar el período escolar (periodYear).)	r<   r*   r+   r   r   r#   r,   r-   r:   r   zFormulario creado.r{   r}   r   whatsapp)rY   r)   r   r&   r   r   nowr   rd   rg   r   r4   addcommitrefreshr`   rt   r   r   rollbackr   )r5   r]   r<   r   r   r   r	   r#   r*   r+   r.   
notify_idswhatsapp_summaryr   s                 r   storezDynamicFormClass.store  s   ,	:HHV$*113D")6QRRXXh'-2Ffd+s6{a/?")6WXX,,.CHH]+1r88:BdD..v6K--d3I IM")6bcc11$7K"")6fgg"##' ' !
C GGKKGGNNGGOOC //5J#%#j/A*=#'#<#<Z#N  $/ff,	   	:GG%#a&99	:s6   )F 7F $A(F F %B)F 	G
'G?G
G
c                   	 | j                  |      }|dddS | j                  j                  t              j	                  t        j
                  |k(        }|"|j	                  t        j                  |k(        }|j	                  t        j                  |k(        }|j                         }|r|j                  dddS d|v r*|d   %t        |d         j                         }|r||_        d|v r,|d   t        |d         j                         nd xs d |_        d|v rC|d   >|d   }t        |t              rt!        |      dk(  rdd	dS | j#                  |      |_        d
|v sd|v r| j'                  |      |_        t+        j,                         |_        | j                  j1                          | j                  j3                  |       d }	d|v sd|v r| j5                  |      }
|
|
ng }	d }|	.t!        |	      dkD  r | j7                  |	|j                  xs d      }dd||dS # t8        $ r2}| j                  j;                          dt        |      dcY d }~S d }~ww xY w)Nr|   r   r   r   r   r   r   r   r   r   r*   rW   rX   
Formularior   zFormulario actualizado.r   )rg   r4   r8   r   r9   r   r<   r+   rB   r:   r   r)   r   r   r   r&   r   r   r#   rd   r*   r   r   r-   r   r   r`   rt   r   r   )r5   r   r]   r<   r+   r=   r.   nr   r   tmpr   r   s                r   updatezDynamicFormClass.updateA  s_   ,	:11$7K"")6fgg./667G7J7Jb7PQA$HH-779DE)55DEA'')C#**6")6OPP~$v,":V%++- CH$GKMGZGf3tM':#;#A#A#Clp"yuy4DN$>h!&$/3v;!3C&-:[\\"&"6"6v">T![D%8 $ 5 5d ;'||~CGGNNGGOOC J!T)-AT-I,,T2$'OS
#%#j/A*=#'#<#<ZIaUa#b  $4,	   	:GG%#a&99	:s1   H- B'H- BH- CH- -	I(6'I#I(#I(c                P   	 | j                   j                  t              j                  t        j                  |k(        }|"|j                  t        j
                  |k(        }|"|j                  t        j                  |k(        }|j                         }|sdddS t        j                         |_
        |j                  |_        | j                   j                          dd|dS # t        $ r2}| j                   j                          dt        |      dcY d }~S d }~ww xY w)Nr|   r   r   r   zRegistro eliminado.)r{   r}   r   )r4   r8   r   r9   r   r<   r+   rB   r   r   r:   r-   r   r   r   r   r   s          r   deletezDynamicFormClass.deletep  s    	:./667G7J7Jb7PQA$HH-779DE&HH-99[HI'')C")6OPP'||~C"//CGGNN'4IQSTT 	:GG%#a&99	:s%   BC*  A	C* *	D%3'D D% D%c                l   | j                   j                  t              j                  t        j                  |k(  t        j
                  j                  d             }|"|j                  t        j                  |k(        }|"|j                  t        j                  |k(        }|j                         S r3   )
r4   r8   r   r9   r   r:   r;   r<   r+   rB   )r5   form_idr<   r+   r=   s        r   _get_form_rowzDynamicFormClass._get_form_row  s     GGMM*+227*))--d3
  )33y@AA")55DEAwwyr   c                :   | j                  ||||      }|j                  d      dk7  r
t               S t               }|j                  d      xs g D ]1  }|j                  d      }|	 |j                  t	        |             3 |S # t
        t        f$ r Y Gw xY w)Nr{   r   r]   r   )r   rY   setr   r[   r(   r\   )	r5   r*   r<   ry   r+   crr_   r   rl   s	            r   _course_student_idsz$DynamicFormClass._course_student_ids  s    ''	9k;W66(y(5L5%2 	A%%$CGGCH%		 
 ":. s   *BBBc                8   t        |t              sy|D ]  }t        |j                  d      xs d      }t        |j                  d      xs |j                  d      xs d      }t	        |j                  d            }|sp|j                  |      }|r$|
|dk(  s|g k(  rd|j                  d	|       d
c S ||dk(  r|dk(  r)t        |t
              rd|j                  d	|       dc S t        |t
              sd|j                  d	|       dc S  y )Nz#Las respuestas deben ser un objeto.r   r   	fieldType
field_typetextrequiredz'Falta responder el campo obligatorio: "questionz".checkboxz
El campo "z!" requiere una lista de opciones.u   " no admite múltiples valores.)r   r   r   rY   boolr&   )r5   r   answersr   fidftreqvals           r   _validate_answers_payloadz*DynamicFormClass._validate_answers_payload  s   '4(8 	\AaeeDk'R(CQUU;'H155+>H&IBquuZ()C++c"C;#)sbyDQUU:WZE[D\\^__{cRiZ!#t,'j#(>'??`aaC&#AEE*c$:#;;Z[[!	\" r   c           	        	 | j                  |||      }|sdddS |j                  sdddS | j                  t        |j                        |||      }|j	                  d      dk7  rd|j	                  dd      g d	S | j
                  j                  t              j                  t        j                  |k(        j                         }|D ci c]  }t        |j                        | }	}g }
|j	                  d
      xs g D ]  }|j	                  d      }|	 t        |      }|	j	                  |      }|
j                  ||j	                  d      xs d|j	                  d      xs d|rdnd|r|j                  ndd        d|
dS c c}w # t        t        f$ r Y w xY w# t         $ r}dt#        |      g d	cY d}~S d}~ww xY w)zGEstudiantes del curso del formulario con estado respondido / en_espera.r|   Formulario no encontrado.r   &El formulario no tiene curso asociado.r{   r   r}   zError al listar estudiantes.r   r]   r   Nr   r   r   
respondido	en_espera)r   r   r   r{   submissionIdr   )r   r*   r   r[   rY   r4   r8   r   r9   dynamic_form_idr   r@   r(   r\   rZ   r   r   r   )r5   r   r<   ry   r+   r.   r   subsr   
by_studentr_   r   rl   sid_intsubr   s                   r   list_students_statusz%DynamicFormClass.list_students_status  s   &	F$$WiEC")6QRR==")6^__++C,>	;XcdBvvh9,")bffYHf6gqstt 892BBgMN 
 9==1#all+Q.=J= CVVF^)r eeK(;!#hG !nnW-

%,'(uu]';'Du&'eeL&9&BU25,;254$ (55+ > ":.   	F%#a&"EE	Fsf   F) F) AF) >AF) F,0F) F(A&F) F) F&#F) %F&&F) )	G2G GGc                   	 | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(        }|j                         }|sddd dS | j                  |||      }|sddd dS 	 |j                  rt        j                  |j                        ni }	t        |	t              si }	|3|j                  't!        |j                        t!        |      k7  rddd dS |j"                  }
|
| j%                  t!        |
            nd}|s| j'                  t!        |j(                  xs d      ||d       }|j+                  d      dk(  rn|j+                  d	      xs g D ]V  }t!        |j+                  d
      xs d      t!        |j"                        k(  s8t-        |j+                  d      xs d      } n |j                  |j"                  |xs dt/        |j0                        |	t3        |      d}d|dS # t        j                  t        f$ r i }	Y nw xY w# t4        $ r}dt-        |      d dcY d }~S d }~ww xY w)Nr|   Respuesta no encontrada.r   r   r   r   r{   r   r]   r   r   r   )r   r   r   submittedAtr   formr   )r4   r8   r   r9   r   r   rB   r   answers_jsonr$   r%   r   r   r'   r(   r+   r[   r@   rU   r   r*   rY   r   r   r,   r/   r   )r5   r   submission_idr<   ry   r+   r=   r   form_rowr   rl   r   r   r   r]   r   s                   r   get_submission_detailz&DynamicFormClass.get_submission_detail  s2   '	H89@@*-->*::gEA '')C")6PZ^__))'9kJH")6Q[_``:=:J:J$**S%5%56PR!'40 G &??.3s3G3{K[3[&-:T^bcc..C;>?4--c#h7PRD//H4F4F4K!0LiYdfjk66(#y0VVF^1r "quu[16Q73s~~;NN#&quu]';'Ar#BD!"
 !$ ^^#}u&s~~6"#H-D (66- (()4 .  	H%#a&$GG	HsV   A(H8 +H8 ?H 4H8 ;B7H8 3A"H8 H51H8 4H55H8 8	IIIIc           
     H   	 | j                  |||      }|sdddS |j                  sdddS | j                  t        |j                        |||      }	||	vrdddS 	 |j                  rt        j                  |j                        ng }
t        |
t              sg }
| j                  |
|      }|rd|dS t        j                         }t        j                  |d      }| j                  j!                  t"              j%                  t"        j&                  |k(  t"        j(                  |k(        j+                         }|rdddS t#        ||||j,                  ||||	      }| j                  j/                  |       | j                  j1                          | j                  j3                  |       d
d|j4                  dS # t
        j                  t        f$ r g }
Y Ew xY w# t6        $ r2}| j                  j9                          dt;        |      dcY d }~S d }~ww xY w)Nr|   r   r   r   7El estudiante no pertenece al curso de este formulario.Fr   zEste formulario ya fue respondido para este estudiante. Elimine las respuestas desde el listado de estudiantes (icono papelera) si debe volver a completarlo.)r   r@   r<   r+   r   submitted_by_user_idr,   r-   r   zRespuestas guardadas.)r{   r}   r   )r   r*   r   r[   r#   r$   r%   r   r&   r'   r(   r   r   r   r   r4   r8   r   r9   r   r@   rB   r+   r   r   r   r   r   r   r   )r5   r   r<   ry   r@   r   user_idr+   r   allowedr   errr   payloadexistingr.   r   s                    r   submit_answerszDynamicFormClass.submit_answers  s   1	:))'9kJH")6QRR%%")6^__..s83E3E/F	S^`klG(")6opp=E=Q=QH$8$89WY!&$/F 00AC")c::,,.Cjju=G89.>>'I.99ZG   %    - '%#$00$%, 	C GGKKGGNNGGOOC '4K]`]c]cddC (()4 D  	:GG%#a&99	:sY   G& G& /G& ?G G& 6BG& A<G& G#G& "G##G& &	H!/'HH!H!c                j   	 | j                  |||      sdddS | j                  j                  t              j	                  t        j
                  |k(  t        j                  |k(        j                         }d|du|r|j                  ndddS # t        $ r}dt        |      dcY d}~S d}~ww xY w)zRIndica si el estudiante ya tiene respuestas guardadas (para bloquear nueva carga).r|   r   r   r   N)hasSubmissionr   r   )r   r4   r8   r   r9   r   r@   rB   r   r   r   )r5   r   r@   r<   r+   r   r   s          r   submission_for_studentz'DynamicFormClass.submission_for_studentT  s    	:%%gy+F")6QRR89.>>'I.99ZG   $%(_.1CFFt   	:%#a&99	:s#   B A6B 	B2B-'B2-B2c                X   	 | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(        j                         }|sdddS |2|j                  &t        |j                        t        |      k7  rdddS | j                  |||      sdddS | j                   j                  |       | j                   j                          dddS # t        $ r2}| j                   j                          dt        |      dcY d}~S d}~ww xY w)zTElimina las respuestas de un estudiante para poder volver a completar el formulario.r|   r   r   Nr   r   zRespuestas eliminadas.)r4   r8   r   r9   r   r   rB   r+   r[   r   r   r   r   r   r   )r5   r   r   r<   r+   r   r   s          r   delete_submissionz"DynamicFormClass.delete_submissionq  s   	:89.11]B.>>'I   ")6PQQ&3??+F3sK_cfgrcsKs")6PQQ%%gy+F")6QRRGGNN3GGNN'4LMM 	:GG%#a&99	:s0   A%C. (3C. C. 49C. .	D)7'D$D)$D)c                   	 | j                  |||      }|sdddS |j                  sdddS | j                  t        |j                        |||      }||vrdddS | j                  j                  t              j                  t        j                  |k(  t        j                  |k(        j                         }|rdddS | j                  |g|j                  xs d      }	dd	|	d
S # t        $ r}
dt        |
      dcY d}
~
S d}
~
ww xY w)u\   Reenvía la plantilla WhatsApp al apoderado (solo estudiantes del curso sin respuesta aún).r|   r   r   r   r   uW   Solo se puede reenviar cuando el estudiante está en espera (sin respuestas guardadas).r   r   u#   Notificación enviada al apoderado.)r{   r}   r   N)r   r*   r   r[   r4   r8   r   r9   r   r@   rB   rt   r   r   r   )r5   r   r@   r<   ry   r+   r   r   r  r   r   s              r   resend_whatsapp_to_guardianz,DynamicFormClass.resend_whatsapp_to_guardian  s%   	:))'9kJH")6QRR%%")6^__..s83E3E/F	S^`klG(")6opp89.>>'I.99ZG   %x   $88*x}}GdXde#@, 
  	:%#a&99	:s4   C* C* /C* A%C* &C* *	D3D DD)r4   r
   r3   )r<   Optional[int]r+   r  )r@   r[   rp   rq   )r@   r[   rp   r   )r]   r   rp   zOptional[List[int]])r]   r   rp   r  )rr   z	List[int]rs   r   rp   r   )
r*   r[   r<   r  ry   r  r+   r  rp   r   )r   d   NNN)rx   r[   rz   r[   r   rq   r<   r  r+   r  rp   r   )r   r[   r<   r  r+   r  rp   r   )r   z	List[Any]rp   r   )r]   r   r<   r  rp   r   )r   r[   r]   r   r<   r  rp   r   )r   r[   r<   r  r+   r  rp   zOptional[DynamicFormModel])
r*   r[   r<   r  ry   r  r+   r  rp   r   )r   z
List[dict]r   r   rp   rq   )
r   r[   r<   r  ry   r  r+   r  rp   r   )NN)r   r[   r   r[   r<   r  ry   r  r+   r  rp   r   )r   r[   r<   r  ry   r  r@   r[   r   r   r   r  r+   r  rp   r   )
r   r[   r@   r[   r<   r  r+   r  rp   r   )
r   r[   r   r[   r<   r  r+   r  rp   r   )r   r[   r@   r[   r<   r  ry   r  r+   r  rp   r   )__name__
__module____qualname__r6   r>   rE   rU   r`   rd   rg   rt   r   r   rY   r   r   r   r   r   r   r   r   r   r  r  r	  r  rI   r   r   r1   r1   2   s   	'	7 		
X" &*CFCF !CF #	CF
 #CF 
CFN ! $#'%)+F+F +F 	+F
 !+F #+F 
+FZH"3-:^-:^:, &*	 ! #	
 
$ 6 &*.F.F !.F #	.F
 #.F 
.Fj &*%)/H/H /H !	/H
 #/H #/H 
/Hr &*;:;: !;: #	;:
 ;: ;: ;: #;: 
;:D &*:: : !	:
 #: 
:D &*:: : !	:
 #: 
:H &*&:&: &: !	&:
 #&: #&: 
&:r   r1   )rp   r   )r.   r   rp   r   )__doc__
__future__r   r$   r   typingr   r   r   
sqlalchemyr   r	   sqlalchemy.ormr
   'app.backend.classes.whatsapp_meta_classr   app.backend.db.modelsr   r   r   r   r   r/   r1   rI   r   r   <module>r     s@    O "   & & ! " M &C
: C
:r   