
    Fi              
       n   d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZmZmZmZ  ed	d
g      ZdedefdZej/                  d       ee
       ee      fdedefd       Zej/                  d       ee
       ee      fdededefd       Zej/                  d       ee
       ee      fdededefd       Zej/                  d       ee
       ee      fdedededefd       Zej9                  d       ee
       ee      fdededefd       Zej=                  d       ee
       ee      fdedededefd       ZejA                  d       ee
       ee      fdededefd       Z ej9                  d        ee
       ee      fdedededefd!       Z!y")#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                 8    t        | j                  xs d      }|S )Nr   )int	school_id)r   sids     S/var/www/pie360backend.cl/public_html/app/backend/routes/informal_test_templates.py
_school_idr      s    
dnn!
"CJ     session_userdbc                    	 t        |       }t        |      j                  |      }t        t        j
                  dd|d      S # t        $ r2}t        t        j                  dt        |      g d      cY d }~S d }~ww xY w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s   AA 	B'A<6B<Bz/{id}idc                    	 t        |      }t        |      j                  | |      }|j                  d      dk(  r.t	        t
        j                  d|j                  d      d d      S t	        t
        j                  dd|j                  d	      d      S # t        $ r2}t	        t
        j                  d
t        |      d d      cY d }~S d }~ww xY w)Nr   error  r"   r!   r$   r   r    r#   r'   )r   r	   	get_by_idgetr   r   HTTP_404_NOT_FOUNDr)   r*   r+   r,   r/   r   r   r   resultr-   s         r   r3   r3   )   s    I&*2.88S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                 
   	 t        |      }t        |      j                  ||       }t        t        j
                  dd|d      S # t        $ r2}t        t        j                  dt        |      g d      cY d }~S d }~ww xY wr   )	r   r	   get_student_submissionsr   r   r)   r*   r+   r,   )r9   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s   AA 	B'A=7B=Bz-/{id}/submissions/student/{student_id}/latestc                 *   	 t        |      }t        |      j                  || |      }t        t        j
                  dd|j                  d      d      S # t        $ r2}t        t        j                  dt        |      d d      cY d }~S d }~ww xY w)Nr   r    r#   r!   r$   r'   )
r   r	   get_latest_submission_answersr   r   r)   r4   r*   r+   r,   )r/   r9   r   r   r   r7   r-   s          r   )get_latest_submission_by_template_studentr?   G   s    I&*2.LLSRTV`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           	         	 t        |      }t        | d      r| j                         n| j                         }t	        t        |dd      xs t        |dd      xs d      |d<   t	        t        |dd      xs d      xs d |d<   t        |dd       |d	<   t        |      j                  ||      }|j                  d
      dk(  r.t        t        j                  d|j                  d      d d      S t        t        j                  d|j                  dd      d|j                  d      id      S # t        $ r2}t        t        j                  dt        |      d d      cY d }~S d }~ww xY w)N
model_dumpr/   r   customer_idprofessional_id	course_idsession_course_idperiod_yearsession_period_yearr   r1     r"   r!   r$      zPlantilla creada.r'   )r   hasattrrB   dictr   getattrr	   storer4   r   r   HTTP_400_BAD_REQUESTHTTP_201_CREATEDr*   r+   r,   )r@   r   r   r   payloadr7   r-   s          r   rN   rN   V   s   I&'.t\'B$//#		%(L$* |]A6&
!"
 (+7<a+P+UTU'V'^Z^#$)0}d)S%&*2.44Wc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$   C0D3 3?D3 3	E.<'E)#E.)E.c                    	 t        |      }t        |d      r|j                  d      n|j                         }t	        |      j                  | ||      }|j                  d      dk(  r.t        t        j                  d|j                  d      d d	      S t        t        j                  d
|j                  d      d| id	      S # t        $ r2}t        t        j                  dt        |      d d	      cY d }~S d }~ww xY w)NrB   T)exclude_unsetr   r1   rI   r"   r!   r$   r   r/   r'   )r   rK   rB   rL   r	   updater4   r   r   rO   r)   r*   r+   r,   )r/   r@   r   r   r   rQ   r7   r-   s           r   rT   rT   q   s'   I&9@|9T$///5Z^ZcZcZe*2.55b'3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	 		D'C?9D?Dc                    	 t        |      }t        |      j                  | |      }|j                  d      dk(  r.t	        t
        j                  d|j                  d      d d      S t	        t
        j                  d|j                  d      d d      S # t        $ r2}t	        t
        j                  dt        |      d d      cY d }~S d }~ww xY w)	Nr   r1   r2   r"   r!   r$   r   r'   )r   r	   deleter4   r   r   r5   r)   r*   r+   r,   r6   s         r   rV   rV      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r8   z/{id}/submissionsc                 *   	 t        |      }t        |d      r|j                         n|j                         }t	        t        |dd      xs t        |dd      xs d      }t        |      j                  | |t	        |j                  d            ||j                  d      xs i t	        t        |dd      xs d      xs d t        |dd       	      }|j                  d
      dk(  r.t        t        j                  d|j                  d      d d      S t        t        j                  d|j                  dd      d|j                  d      id      S # t        $ r2}t        t        j                  dt        |      d d      cY d }~S d }~ww xY w)NrB   r/   r   rC   r9   answersrE   rG   )template_idr   r9   rD   rX   rF   rH   r   r1   rI   r"   r!   r$   rJ   zRespuestas guardadas.r'   )r   rK   rB   rL   r   rM   r	   submit_answersr4   r   r   rO   rP   r*   r+   r,   )	r/   r@   r   r   r   rQ   rD   r7   r-   s	            r   rZ   rZ      s   I&'.t\'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 ?E 	F '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   r4   r.   r3   r<   r?   postrN   putrT   rV   rZ    r   r   <module>rg      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   