
    nji}              
       Z   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\S\4S jj5       r\R)                  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\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g)zXRouter: Registro de acciones del profesor - Observaciones (1 por course_id, subject_id).    )	APIRouterDependsstatus)JSONResponse)get_db)get_current_active_user)	UserLogin#StoreCourseTeacherRecordObservation$UpdateCourseTeacherRecordObservation)#CourseTeacherRecordObservationClass)Sessionz#/course_teacher_record_observationsz"Course Teacher Record Observations)prefixtagsz/by_course/{course_id}	course_idsession_userdbc           	          [        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)z3Lista observaciones del curso (una por asignatura).)r   r   error  messageErrorr   r   datastatus_codecontent   OKr   N)	r   get_by_course_idgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   resultes        hC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\course_teacher_record_observations.pyr   r      s    
4R8IIT]I^::h7*"AA#&6::i3Q[]^  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB +B 
C $B;5C ;C z+/by_course/{course_id}/subject/{subject_id}
subject_idc                     [        U5      R                  XS9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)u5   Obtiene la observación para (course_id, subject_id).)r   r(   r   r     r   zNo encontradoNr   r   r   r   r   r   )
r   get_by_course_subjectr    r   r   HTTP_404_NOT_FOUNDr"   r#   r!   r$   )r   r(   r   r   r%   r&   s         r'   r+   r+   .   s    
4R8NNYbNz::h7*"55#&6::i3Ycgh  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB *B 
B?$B:4B?:B?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)u    Obtiene una observación por id.r   r   r*   r   Registro no encontradoNr   r   r   r   r   r   )
r   	get_by_idr    r   r   r,   r"   r#   r!   r$   )r-   r   r   r%   r&   s        r'   r0   r0   H   s    
4R8BB2F::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)ua   Crea o actualiza observación por (course_id, subject_id). Una sola fila por (curso, asignatura).
model_dumpr   r   r   r   zError al guardarNr   r   r   r-      r   )hasattrr2   dictr   storer    r   r   r!   HTTP_201_CREATEDr#   r$   )r   r   r   payloadr%   data_outr&   s          r'   r6   r6   a   s   
'.t\'B'B$//#		4R8>>wG::h7*"AA#&6::iI[3\fjk  *0F);)G6::f%dTZT^T^_cTdMe//"vzz)T/JT\]
 	
  
=="s1vtD
 	

s%   BC0 A!C0 0
D):$D$D)$D)c                 d    [        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      UR                  S5      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)u2   Actualiza observación por id (solo observations).r2   T)exclude_unsetNr   r   r*   r   r/   r   r   r   r   r   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=   |   s-   
9@|9T9T$///5lplululwl}l}l  [Rldhde  DE[_[\[_l  [R4R8??L::h7*"55#&6::iIa3blpq  **"vzz)T/JTZT^T^_eTfg
 	
 [R  
=="s1vtD
 	

s=   AC6 	C0C0AC6 5:C6 0C6 6
D/ $D*$D/*D/N)__doc__fastapir   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr   app.backend.schemasr	   r
   r   ;app.backend.classes.course_teacher_record_observation_classr   sqlalchemy.ormr   "course_teacher_record_observationsr    intr   r+   r0   postr6   putr=        r'   <module>rN      s   ^ . . * * > 
 l "%.0
.	/& " $''(@A &&=>&/


 	
 B
0 $''(UV &&=>&/	


 
 		
 W
2 $''0 &&=>&/


 	
 1
0 $((2 &&=>&/

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

.
 
 		
 1
rM   