
    &6j              
          S r SSKJrJrJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJrJrJrJr  \" S	S
/S9rS\S\4S jr\R/                  S5      \" \
5      \" \5      4S\S\4S jj5       r\R/                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R/                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R/                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\R9                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R=                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\RA                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r \R9                  S 5      \" \
5      \" \5      4S\S\S\S\4S! jj5       r!g")#z=Plantillas de pruebas informales (reutilizables por colegio).    )	APIRouterDependsstatus)JSONResponse)Session)get_current_active_user)InformalTestTemplateClass)get_db)StoreInformalTestTemplate!SubmitInformalTestTemplateAnswersUpdateInformalTestTemplate	UserLoginz/informal_test_templateszInformal Test Templates)prefixtagsuserreturnc                 B    [        U R                  =(       d    S5      nU$ )Nr   )int	school_id)r   sids     \C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\informal_test_templates.py
_school_idr      s    
dnn!
"CJ     session_userdbc                      [        U 5      n[        U5      R                  U5      n[        [        R
                  SSUS.S9$ ! [         a/  n[        [        R                  S[        U5      / S.S9s S nA$ S nAff = fN   OKr   messagedatastatus_codecontent  )	r   r	   get_allr   r   HTTP_200_OK	ExceptionHTTP_500_INTERNAL_SERVER_ERRORstr)r   r   r   r#   es        r   get_listr.      s    
G&(,44S9(:(:s_cmqDrss G(M(Mberuvwrx  CE  XF  G  	GG   A A 
A<$A71A<7A<z/{id}idc                     [        U5      n[        U5      R                  X5      nUR                  S5      S:X  a+  [	        [
        R                  SUR                  S5      S S.S9$ [	        [
        R                  SSUR                  S	5      S.S9$ ! [         a/  n[	        [
        R                  S
[        U5      S S.S9s S nA$ S nAff = f)Nr   error  r"   r!   r$   r   r    r#   r'   )r   r	   	get_by_idgetr   r   HTTP_404_NOT_FOUNDr)   r*   r+   r,   r0   r   r   r   resultr-   s         r   r4   r4   )   s    I&*2.88A::h7*F,E,EZ]jpjtjtu~j  JN  PO  P  P(:(:s_cmsmwmwx~m  EA  B  	B I(M(Mberuvwrx  CG  XH  I  	II$   A$B '*B 
C$C CCz!/submissions/student/{student_id}
student_idc                      [        U5      n[        U5      R                  X05      n[        [        R
                  SSUS.S9$ ! [         a/  n[        [        R                  S[        U5      / S.S9s S nA$ S nAff = fr   )	r   r	   get_student_submissionsr   r   r)   r*   r+   r,   )r:   r   r   r   r#   r-   s         r   get_submissions_by_studentr=   9   s    G&(,DDSU(:(:s_cmqDrss G(M(Mberuvwrx  CE  XF  G  	GGr/   z-/{id}/submissions/student/{student_id}/latestc                     [        U5      n[        U5      R                  X@U5      n[        [        R
                  SSUR                  S5      S.S9$ ! [         a/  n[        [        R                  S[        U5      S S.S9s S nA$ S nAff = f)Nr   r    r#   r!   r$   r'   )
r   r	   get_latest_submission_answersr   r   r)   r5   r*   r+   r,   )r0   r:   r   r   r   r8   r-   s          r   )get_latest_submission_by_template_studentr@   G   s    I&*2.LLSV`a(:(:s_cmsmwmwx~m  EA  B  	B I(M(Mberuvwrx  CG  XH  I  	IIs   AA 
B$BBBz/storebodyc           	          [        U5      n[        U S5      (       a  U R                  5       OU R                  5       n[	        [        USS5      =(       d    [        USS5      =(       d    S5      US'   [	        [        USS5      =(       d    S5      =(       d    S US'   [        USS 5      US	'   [        U5      R                  XC5      nUR                  S
5      S:X  a+  [        [        R                  SUR                  S5      S S.S9$ [        [        R                  SUR                  SS5      SUR                  S5      0S.S9$ ! [         a/  n[        [        R                  S[        U5      S S.S9s S nA$ S nAff = f)N
model_dumpr0   r   customer_idprofessional_id	course_idsession_course_idperiod_yearsession_period_yearr   r2     r"   r!   r$      zPlantilla creada.r'   )r   hasattrrC   dictr   getattrr	   storer5   r   r   HTTP_400_BAD_REQUESTHTTP_201_CREATEDr*   r+   r,   )rA   r   r   r   payloadr8   r-   s          r   rO   rO   V   s   I&'.t\'B'B$//#		%(L$* |]A6&
!"
 (+7<a+P+UTU'V'^Z^#$)0}d)S%&*2.44WB::h7*F,G,G\_lrlvlv  xA  mB  LP  RQ  R  R//"vzz)EX/Ydhjpjtjtuyjzc{|
 	
  I(M(Mberuvwrx  CG  XH  I  	IIs$   DE 	<E 
E?$E:4E?:E?c                     [        U5      n[        US5      (       a  UR                  SS9OUR                  5       n[	        U5      R                  XU5      nUR                  S5      S:X  a+  [        [        R                  SUR                  S5      S S.S	9$ [        [        R                  S
UR                  S5      SU 0S.S	9$ ! [         a/  n[        [        R                  S[        U5      S S.S	9s S nA$ S nAff = f)NrC   T)exclude_unsetr   r2   rJ   r"   r!   r$   r   r0   r'   )r   rL   rC   rM   r	   updater5   r   r   rP   r)   r*   r+   r,   )r0   rA   r   r   r   rR   r8   r-   s           r   rU   rU   q   s(   I&9@|9T9T$///5Z^ZcZcZe*2.55b3G::h7*F,G,G\_lrlvlv  xA  mB  LP  RQ  R  R(:(:s_e_i_ijs_t  @D  FH  I  EJ  K  	K I(M(Mberuvwrx  CG  XH  I  	IIs$   BC ,C 
C>$C93C>9C>c                     [        U5      n[        U5      R                  X5      nUR                  S5      S:X  a+  [	        [
        R                  SUR                  S5      S S.S9$ [	        [
        R                  SUR                  S5      S S.S9$ ! [         a/  n[	        [
        R                  S[        U5      S S.S9s S nA$ S nAff = f)	Nr   r2   r3   r"   r!   r$   r   r'   )r   r	   deleter5   r   r   r6   r)   r*   r+   r,   r7   s         r   rW   rW      s    I&*2.55b>::h7*F,E,EZ]jpjtjtu~j  JN  PO  P  P(:(:s_e_i_ijs_t  C  ED  E  	E I(M(Mberuvwrx  CG  XH  I  	IIr9   z/{id}/submissionsc                 R    [        U5      n[        US5      (       a  UR                  5       OUR                  5       n[	        [        USS5      =(       d    [        USS5      =(       d    S5      n[        U5      R                  U U[	        UR                  S5      5      UUR                  S5      =(       d    0 [	        [        USS5      =(       d    S5      =(       d    S [        USS 5      S	9nUR                  S
5      S:X  a+  [        [        R                  SUR                  S5      S S.S9$ [        [        R                  SUR                  SS5      SUR                  S5      0S.S9$ ! [         a/  n[        [        R                  S[        U5      S S.S9s S nA$ S nAff = f)NrC   r0   r   rD   r:   answersrF   rH   )template_idr   r:   rE   rY   rG   rI   r   r2   rJ   r"   r!   r$   rK   zRespuestas guardadas.r'   )r   rL   rC   rM   r   rN   r	   submit_answersr5   r   r   rP   rQ   r*   r+   r,   )	r0   rA   r   r   r   rR   rE   r8   r-   s	            r   r[   r[      s   I&'.t\'B'B$//#		L$* |]A6

 +2.==7;;|45+KK	*0b!',Q"G"L1MUQU 'mT J > 
 ::h7*F,G,G\_lrlvlv  xA  mB  LP  RQ  R  R//"vzz)E\/]hlntnxnxy}n~g  A
 	
  I(M(Mberuvwrx  CG  XH  I  	IIs$   D-E- 0<E- -
F&7$F!F&!F&N)"__doc__fastapir   r   r   fastapi.responsesr   sqlalchemy.ormr   app.backend.auth.auth_userr   0app.backend.classes.informal_test_template_classr	   app.backend.db.databaser
   app.backend.schemasr   r   r   r   informal_test_templatesr   r   r5   r.   r4   r=   r@   postrO   putrU   rW   r[    r   r   <module>rh      s   C . . * " > V *  $%
#	$ Y 3 
 R %&=>&/	G	G	G !	G W% &&=>&/III 	I &I @A &&=>&/
G
G
G 	
G B
G LM &&=>&/	III I 		I NI h' &&=>&/I
#II 	I (I4 W% &&=>&/	II
$I I 		I &I" ( &&=>&/III 	I )I 12 &&=>&/	II
+I I 		I 3Ir   