
    '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)DiversityStrategyOptionModelc                 ^    | y t        | d      r| j                         S | rt        |       S d S )N	isoformat)hasattrr   str)vs    \/var/www/pie360backend.cl/public_html/app/backend/classes/diversity_strategy_option_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diversity_criterion_idlabel
sort_order
added_dateupdated_datedeleted_date)r   r   r   r   r   r   r   r   )r   s    r   _row_to_dictr      sN    dd"#":":ll%all3'7'7 r   c                   @    e Zd ZdefdZd	dee   defdZdedefdZ	y)
DiversityStrategyOptionClassdbc                     || _         y N)r   )selfr   s     r   __init__z%DiversityStrategyOptionClass.__init__   s	    r   Nr   r   c                    	 | j                   j                  t              j                  t        j                  j                  d            }|'|dk7  r"|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)z\Lista opciones activas. Filtro opcional por diversity_criterion_id (-1 o None = no filtrar).Nsuccessstatusdataerrorr%   messager&   )r   queryr   filterr   is_r   order_byr   allr   	Exceptionr
   )r   r   qrowsr   es         r   getz DiversityStrategyOptionClass.get   s    
	F:;4AAEEdKL  &16LPR6RHH9PPTjjk:::EEFJJLD'41Pa,q/1PQQ1P 	F%#a&"EE	Fs0   B&C (B?:C ?C 	C&C!C&!C&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 opción por id.r'   zRegistro no encontrado.Nr(   r#   r$   )	r   r*   r   r+   r   firstr   r/   r
   )r   r   rowr2   s       r   	get_by_idz&DiversityStrategyOptionClass.get_by_id,   s    	H''-- <=DDEaEdEdhjEjkqqsC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA% A% %	B.B<BBr   )
__name__
__module____qualname__r   r    r   intr   r3   r7    r   r   r   r      s>    7 F(3- F3 FHC HC Hr   r   N)typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   r   dictr   r   r<   r   r   <module>rA      s3      " >!	0 	T 	H Hr   