
    -i[              
          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JrJr  SSKJr  SSKJr  \" S	S
/S9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\R3                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R7                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\R;                  S5      \" \
5      \" \5      4S\S\S\4S jj5       rg)uA   Router: tipos de adecuación curricular y adecuaciones por curso.    )	APIRouterDependsstatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseCurricularAdequacyUpdateCourseCurricularAdequacy)CourseCurricularAdequacyClass)Sessionz/course_curricular_adequacieszCourse Curricular Adequacies)prefixtagsz/typessession_userdbc           	          [        U5      R                  5       nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      / S.S9$ [        [        R                  SS	UR                  S
/ 5      S.S9$ ! [         a/  n[        [        R
                  S[        U5      / S.S9s SnA$ SnAff = f)uj   Lista tipos de adecuación curricular (De acceso, Objetivos OA, Plan de estudio, PACI) para el formulario.r   error  messagezError al listarr   r   datastatus_codecontent   OKr   N)	r   	get_typesgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   resultes       bC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\course_curricular_adequacies.pyr   r      s    
.r2<<>::h7*"AA#&6::iIZ3[egh  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB +B 
C$B<6C<Cz/by_course/{course_id}	course_idc           	          [        U5      R                  U S9nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      / S.S9$ [        [        R                  S	S
UR                  S/ 5      S.S9$ ! [         a/  n[        [        R
                  S[        U5      / S.S9s SnA$ SnAff = f)zpEstructura completa para el curso: cada tipo con applied, scope_text, strategies_text, subject_ids, student_ids.)r&   r   r   r   r   Errorr   r   r   r   r   N)	r   get_by_course_idr   r   r   r   r    r!   r"   )r&   r   r   r#   r$   s        r%   r)   r)   )   s    
.r2CCiCX::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB +B 
C $B;5C ;C z/{id}idc                     [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  S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)uC   Obtiene una adecuación por id (incluye subject_ids y student_ids).r   r     r   Registro no encontradoNr   r   r   r   r   r   )
r   	get_by_idr   r   r   HTTP_404_NOT_FOUNDr    r!   r   r"   r*   r   r   r#   r$   s        r%   r.   r.   B   s    
.r2<<R@::h7*"55#&6::iIa3blpq  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB *B 
C$B<6C<Cz/storer   c                 X    [        U S5      (       a  U R                  5       OU R                  5       n[        U5      R	                  U5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS.S	9$ UR                  S
5      b  UR                  S
5      OSUR                  S5      0n[        [        R                  SUR                  SS5      US.S	9$ ! [         a/  n[        [        R                  S[        U5      SS.S	9s SnA$ SnAff = f)u   Crea o actualiza una adecuación para (course_id, curricular_adequacy_type_id). Incluye applied, scope_text, strategies_text, subject_ids, student_ids.
model_dumpr   r   r   r   zError al guardarNr   r   r   r*      zRegistro guardado)hasattrr2   dictr   storer   r   r   r   HTTP_201_CREATEDr!   r"   )r   r   r   payloadr#   data_outr$   s          r%   r6   r6   [   s   
'.t\'B'B$//#		.r288A::h7*"AA#&6::iI[3\fjk  *0F);)G6::f%dTZT^T^_cTdMe//"vzz)EX/Yckl
 	
  
=="s1vtD
 	

s%   BC0 A!C0 0
D):$D$D)$D)c           	      h    [        US5      (       a  UR                  SS9O7UR                  5       R                  5        VVs0 s H  u  pEUc  M
  XE_M     snnn[	        U5      R                  X5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS	5      SS
.S9$ [        [        R                  SUR                  SS5      SUR                  S5      0S
.S9$ s  snnf ! [         a/  n[        [        R                  S[        U5      SS
.S9s SnA$ SnAff = f)ul   Actualiza una adecuación por id (opcional: applied, scope_text, strategies_text, subject_ids, student_ids).r2   T)exclude_unsetNr   r   r,   r   r-   r   r   r   zRegistro actualizador*   r   )r4   r2   r5   itemsr   updater   r   r   r/   r    r!   r   r"   )	r*   r   r   r   kvr8   r#   r$   s	            r%   r=   r=   v   s4   
9@|9T9T$///5lplululwl}l}l  [Rldhde  DE[_[\[_l  [R.r299"F::h7*"55#&6::iIa3blpq  **"vzz)E[/\gkmsmwmwx|m}f~
 	
 [R  
=="s1vtD
 	

s=   AC8 	C2C2AC8 5<C8 2C8 8
D1$D,&D1,D1c                     [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	UR                  S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)u1   Borrado lógico de la adecuación (deleted_date).r   r   r,   r   r-   Nr   r   r   zRegistro eliminador   )
r   deleter   r   r   r/   r    r!   r   r"   r0   s        r%   rA   rA      s    
.r299"=::h7*"55#&6::iIa3blpq  **"vzz)EY/Zdhi
 	
  
=="s1vtD
 	

s$   AB	 +B	 	
C$B=7C=CN)__doc__fastapir   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr   app.backend.schemasr	   r
   r   4app.backend.classes.course_curricular_adequacy_classr   sqlalchemy.ormr   course_curricular_adequaciesr   r   intr)   r.   postr6   putr=   rA        r%   <module>rP      s   G . . * * > h h ^ "(*
(	)   !!(+%&=>&/


 ,
. !!":; &&=>&/


 	
 <
0 !!'* &&=>&/


 	
 +
0 ""8, &&=>&/

'

 	
 -
4 !!'* &&=>&/	


(
 
 		
 +
4 $$W- &&=>&/


 	
 .
rO   