
    U+i              
       L   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mZmZ ddlmZ ddlmZ  ed	d
g      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j)                  d       ee
       ee      fdededefd       Zej3                  d       ee
       ee      fdededefd       Zej7                  d       ee
       ee      fdedededefd       Zy)zPRegistro 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           	         	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      g d      S t        t        j                  d	d
|j                  dg       d      S # t        $ r2}t        t        j
                  dt        |      g d      cY d}~S d}~ww xY w)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        ^/var/www/pie360backend.cl/public_html/app/backend/routes/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
'C?C
C
z+/by_course/{course_id}/subject/{subject_id}
subject_idc                    	 t        |      j                  | |      }|j                  d      dk(  r/t        t        j
                  d|j                  d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)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NYboyNz::h7*"55#&6::i3Ycgh  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB !-B 	C
'C?C
C
z/{id}idc                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  d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)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'C=CCz/storer   c                 Z   	 t        | d      r| j                         n| j                         }t        |      j	                  |      }|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S |j                  d
      |j                  d
      nd|j                  d      i}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)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$//#		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C/ A#C/ /	D*8'D%D*%D*c                 j   	 t        |d      r|j                  d      n4|j                         j                         D ci c]  \  }}|	|| c}}}t	        |      j                  | |      }|j                  d      dk(  r/t        t        j                  d|j                  dd	      dd
      S t        t        j                  d|j                  dd      |j                  d      d
      S c c}}w # t        $ r2}t        t        j                  dt        |      dd
      cY d}~S d}~ww xY w)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=   |   s0   
9@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [R4R8??GL::h7*"55#&6::iIa3blpq  **"vzz)T/JTZT^T^_eTfg
 	
 [R  
=="s1vtD
 	

s<   ?C7 
C1C1A!C7 3=C7 1C7 7	D2 'D-'D2-D2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   V . . * * > 
 l "%.0
.	/& " $''(@A &&=>&/


 	
 B
0 $''(UV &&=>&/	


 
 		
 W
2 $''0 &&=>&/


 	
 1
0 $((2 &&=>&/

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

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