
    'Xi                     V    d dl mZmZ d dlmZ d dlmZ d ZdedefdZ	 G d d	      Z
y
)    )OptionalAny)Session)DiversityCriterionModelc                 ^    | y t        | d      r| j                         S | rt        |       S d S )N	isoformat)hasattrr   str)vs    V/var/www/pie360backend.cl/public_html/app/backend/classes/diversity_criterion_class.py_serialize_dater      s1    yq+{{}3q6 D     rreturnc           	          | j                   | j                  | j                  | j                  t	        | j
                        t	        | j                        t	        | j                        dS )N)idkeylabel
sort_order
added_dateupdated_datedeleted_date)r   r   r   r   r   r   r   r   )r   s    r   _row_to_dictr      sL    dduull%all3'7'7 r   c                   4    e Zd ZdefdZdefdZdedefdZy)DiversityCriterionClassdbc                     || _         y )N)r   )selfr   s     r   __init__z DiversityCriterionClass.__init__   s	    r   r   c                 |   	 | j                   j                  t              j                  t        j                  j                  d            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)zILista criterios activos (deleted_date is None), ordenados por sort_order.Nsuccessstatusdataerrorr#   messager$   )r   queryr   filterr   is_order_byr   allr   	Exceptionr
   )r   rowsr   es       r   getzDiversityCriterionClass.get   s    		F56/<<@@FG1<<=	  (41Pa,q/1PQQ1P 	F%#a&"EE	Fs0   A;B =BB B 	B;"B60B;6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)zObtiene un criterio por id.r%   zRegistro no encontrado.Nr&   r!   r"   )	r   r(   r   r)   r   firstr   r-   r
   )r   r   rowr/   s       r   	get_by_idz!DiversityCriterionClass.get_by_id+   s    	H''-- 78??@W@Z@Z^`@`aggiC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA% A% %	B.B<BBN)	__name__
__module____qualname__r   r   r   r0   intr4    r   r   r   r      s2    7 FS FHC HC Hr   r   N)typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   r   dictr   r   r9   r   r   <module>r>      s3      " 9!	+ 	 	H Hr   