
    'Xit                     h    d Z ddlmZ ddlmZmZ ddlmZ ddlmZ ddZ	dede
fd	Z G d
 d      Zy)uk   Lógica para course_teacher_record_observations (observaciones por asignatura, 1 por course_id+subject_id).    )datetime)OptionalAny)Session)#CourseTeacherRecordObservationModelc                 |    | y t        | t              r| S t        | d      r| j                  |      S t        |       S )Nstrftime)
isinstancestrhasattrr	   )vfmts     d/var/www/pie360backend.cl/public_html/app/backend/classes/course_teacher_record_observation_class.py	_date_strr   	   s:    y!Sq*zz#q6M    rreturnc                     | j                   | j                  | j                  | j                  t	        | j
                        t	        | j                        dS )N)id	course_id
subject_idobservations
created_at
updated_at)r   r   r   r   r   r   r   )r   s    r   _row_to_dictr      s@    dd[[ll-- r   c                   p    e Zd ZdefdZdedefdZdededefdZdedefd	Z	d
e
defdZded
e
defdZy)#CourseTeacherRecordObservationClassdbc                     || _         y )N)r   )selfr   s     r   __init__z,CourseTeacherRecordObservationClass.__init__   s	    r   r   r   c                 d   	 | j                   j                  t              j                  t        j                  |k(        j                  t        j                        j                         }d|D cg c]  }t        |       c}dS c c}w # t        $ r}dt        |      g dcY d}~S d}~ww xY w)z3Lista observaciones del curso (una por subject_id).successstatusdataerrorr%   messager&   N)r   queryr   filterr   order_byr   allr   	Exceptionr   )r    r   rowsr   es        r   get_by_course_idz4CourseTeacherRecordObservationClass.get_by_course_id"   s    		FAB;EERS=HHI	  (41Pa,q/1PQQ1P 	F%#a&"EE	Fs0   A/B 1BB B 	B/B*$B/*B/r   c                 8   	 | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(        j                         }|sddddS dt        |      dS # t        $ r}dt        |      ddcY d}~S d}~ww xY w)u?   Obtiene la observación para (course_id, subject_id) si existe.r'   Registro no encontrado.Nr(   r#   r$   )
r   r*   r   r+   r   r   firstr   r.   r   )r    r   r   rowr0   s        r   get_by_course_subjectz9CourseTeacherRecordObservationClass.get_by_course_subject/   s    	HAB7AAYN7BBjP   ")6OY]^^'c1BCC 	H%#a&$GG	Hs$   A&A7 )A7 7	B BBBr   c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sddddS dt        |      dS # t        $ r}dt        |      ddcY d}~S d}~ww xY w)u    Obtiene una observación por id.r'   r3   Nr(   r#   r$   )	r   r*   r   r+   r   r4   r   r.   r   )r    r   r5   r0   s       r   	get_by_idz-CourseTeacherRecordObservationClass.get_by_id@   s    	H''-- CDKKLoLrLrvxLxy  BC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA% A% %	B.B<BBr&   c                    	 t        |j                  d            }t        |j                  d            }|j                  d      xs dj                         xs d}t        j                         }| j
                  j                  t              j                  t        j                  |k(  t        j                  |k(        j                         }|r]||_        ||_        | j
                  j                          | j
                  j                  |       dd|j                   t#        |      dS t        |||||	      }| j
                  j%                  |       | j
                  j                          | j
                  j                  |       dd
|j                   t#        |      dS # t&        $ r2}| j
                  j)                          dt+        |      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).r   r   r    Nr#   u   Observación actualizada.r%   r)   r   r&   )r   r   r   r   r   u   Observación creada.r'   r%   r)   )intgetstripr   nowr   r*   r   r+   r   r   r4   r   r   commitrefreshr   r   addr.   rollbackr   )r    r&   r   r   r   r@   r5   r0   s           r   storez)CourseTeacherRecordObservationClass.storeJ   s   !	:DHH[12ITXXl34J HH^4:AACKtL,,.C AB7AAYN7BBjP   #/ !$ $"+8S[^[a[akwx{k|}}5#%)C GGKKGGNNGGOOC '4JRURXRXbnorbstt 	:GG%#a&99	:s%   D,F) /A9F) )	G$2'GG$G$c                 D   	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS d|v r,|j                  d      xs dj                         xs d|_        t        j                         |_        | j                   j                          | j                   j                  |       dd|t        |      d	S # t        $ r2}| j                   j!                          dt#        |      dcY d}~S d}~ww xY w)
u2   Actualiza observación por id (solo observations).r'   r3   r<   r   r:   Nr#   zRegistro actualizado.r;   )r   r*   r   r+   r   r4   r>   r?   r   r   r@   r   rA   rB   r   r.   rD   r   )r    r   r&   r5   r0   s        r   updatez*CourseTeacherRecordObservationClass.updateo   s    	:''-- CDKKLoLrLrvxLxy  BC")6OPP%$(HH^$<$B#I#I#K#St %\\^CNGGNNGGOOC '4KSU_klo_pqq 	:GG%#a&99	:s%   AC$ BC$ $	D-'DDDN)__name__
__module____qualname__r   r!   r=   r   r1   r6   r8   dictrE   rG    r   r   r   r      s    7 F# F# FHs H H H"HC HC H#:$ #:3 #:J: :D :S :r   r   N)z%Y-%m-%d %H:%M:%S)__doc__r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   r   rK   r   r   rL   r   r   <module>rQ      s9    q    " E7 D _: _:r   