
    Fi	                     L    d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d d      Zy)	uN   Informes Resultado Prueba Evalua (título persistido en evalua_result_report).    )datetime)Any)Session)EvaluaResultReportModelc                   V    e Zd ZdefdZdedefdZddedede	fdZ
deded	ede	fd
Zy)EvaluaResultClassdbc                     || _         y )N)r	   )selfr	   s     P/var/www/pie360backend.cl/public_html/app/backend/classes/evalua_result_class.py__init__zEvaluaResultClass.__init__   s	        rreturnc                 :   |j                   |j                   |j                  |j                  |j                  xs dj	                         |j
                  r|j
                  j                         nd |j                  r|j                  j                         dS d dS )N )id	detail_id
student_iddocument_catalog_idtitle
added_dateupdated_date)r   r   r   r   stripr   	isoformatr   )r   r   s     r   _row_to_datazEvaluaResultClass._row_to_data   s}    $$,,#$#8#8ggm**,67ll!,,002:;..ANN446
 	
 OS
 	
r   r   r   c                    	 | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(        j                  t        j                  j                               j                         }|sdddS d| j                  |      dS # t        $ r}dt        |      dcY d}~S d}~ww xY w)z(Solo lectura: no crea ni modifica filas.successN)statusdataerrorr   message)r	   queryr   filterr   r   order_byr   descfirstr   	Exceptionstr)r   r   r   r   es        r   get_by_studentz EvaluaResultClass.get_by_student   s    	:56+66*D+??CVV 14499;<  "+T::'1B1B11EFF 	:%#a&99	:s$   BB' B' '	C0C=CCr   c                    	 |xs dj                         }|sdddS t        j                         }t        |||||      }| j                  j                  |       | j                  j                          | j                  j                  |       d|j                  dS # t        $ r2}| j                  j                          dt        |      dcY d}~S d}~ww xY w)	u   
        Cada subida crea una fila nueva (historial por versión de archivo en catálogo 42).
        Sin commit propio: misma transacción que `folders` en el POST upload.
        r   r!   u   El título es obligatorio.r"   )r   r   r   r   r   r   )r   r   N)r   r   nowr   r	   addflushrefreshr   r)   rollbackr*   )r   r   r   r   tr.   rowr+   s           r   upsert_titlezEvaluaResultClass.upsert_title+   s    
	:"##%A")6RSS,,.C)%$7 C GGKKGGMMOGGOOC 'svv66 	:GG%#a&99	:s#   B  BB   	C)'CCCN)*   )__name__
__module____qualname__r   r   r   dictr   intr   r,   r*   r5    r   r   r   r   
   s_    7 	
5 	
$ 	
: :3 :PS :$:s : :S :UX :r   r   N)	__doc__r   typingr   sqlalchemy.ormr   app.backend.db.modelsr   r   r<   r   r   <module>rA      s    T   " 98: 8:r   