
    4!j                     X    d Z ddlZddlmZ ddlmZmZ ddlmZ ddlm	Z	  G d d      Z
y)	u0   Document 6 – Formulario de revaluación (FUR).    N)datetime)AnyOptional)Session)FurFormModelc                       e Zd Z eh d      ZdefdZedede	e
   fd       Zedede	e   fd       Zdedefd	Zd
edefdZddede	e
   defdZdedefdZd
ededefdZy)FurFormClass>   id	school_id
added_date
student_idfur_variantupdated_datedocument_type_idstudent_identification_numberdbc                     || _         y N)r   )selfr   s     K/var/www/pie360backend.cl/public_html/app/backend/classes/fur_form_class.py__init__zFurFormClass.__init__   s	        payloadreturnc                     | j                  d      xs | j                  d      }|y t        |      j                         }|xs d S )Nr   identification_number)getstrstrip)r   rawtexts      r   _resolve_student_rutz!FurFormClass._resolve_student_rut   sB    kk9:bgkkJa>b;3x~~|tr   c                 v    | j                  d      }||dk(  ry 	 t        |      S # t        t        f$ r Y y w xY w)Nr    )r   int	TypeError
ValueError)r   r    s     r   _resolve_school_idzFurFormClass._resolve_school_id"   sC    kk+&;#)	s8O:& 		s   
& 88rowc                 B   |j                   |j                  |j                  |j                  |j                  |j
                  xs dd}|j                  r/	 |j                  t        j                  |j                               |j                  |d<   |j                  |d<   |j                  r|j                  |d<   |j                  r|j                  j                         |d<   |j                  r|j                  j                         |d<   |S # t        $ r Y w xY w)Ndea)r
   r   r   r   r   r   r   r   r   r   r   )r
   r   r   r   r   r   	form_dataupdatejsonloads	Exceptionr   	isoformatr   )r   r)   datas      r   _to_dictzFurFormClass._to_dict,   s    &&..-0-N-N # 4 4??3e
 ==DJJs}}56  MM[030Q0Q,-,,,/,M,MD()>>!$!9!9!;D#&#3#3#=#=#?D   s   .D 	DDr
   c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|r| j                  |      S dddS # t        $ r}dt        |      dcY d }~S d }~ww xY w)NerrorFormulario FUR no encontrado.statusmessage)	r   queryr   filterr
   firstr3   r0   r   )r   r
   r)   es       r   r   zFurFormClass.getE   ss    	:''---44\__5JKQQSC}}S))%2QRR 	:%#a&99	:s$   AA' "A' '	B0B=BBNr   r   c                    	 | j                   j                  t              j                  t        j                  |k(        }|r"|j                  t        j
                  |k(        }|j                  t        j                  j                               j                         }|r| j                  |      S dddS # t        $ r}dt        |      dcY d }~S d }~ww xY w)Nr5   z)No hay formulario FUR para el estudiante.r7   )r   r:   r   r;   r   r   order_byr
   descr<   r3   r0   r   )r   r   r   r:   r)   r=   s         r   get_by_student_idzFurFormClass.get_by_student_idN   s    		:GGMM,/66|7N7NR\7\]E\%=%=%LM..!5!5!78>>@C}}S))%2]^^ 	:%#a&99	:s$   B0B8 3B8 8	CCCCc                    	 |j                  d      }|j                  dd      }|j                  d      xs dj                         xs d}| j                  |      }| j                  |      }|j	                         D ci c]  \  }}|| j
                  vs|| }	}}t        j                         }
t        ||||||	rt        j                  |	d      nd |
|
      }| j                  j                  |       | j                  j                          | j                  j                  |       d	d
|j                  dS c c}}w # t         $ r2}| j                  j#                          dt%        |      dcY d }~S d }~ww xY w)Nr   r      r   r+   Fensure_ascii)r   r   r   r   r   r,   r   r   successzFormulario FUR guardado.r8   r9   r
   r5   r7   )r   r   r(   r"   itemsRESERVED_KEYSr   nowr   r.   dumpsr   addcommitrefreshr
   r0   rollbackr   )r   r   r   r   r   r   student_rutkvr,   rJ   r)   r=   s                r   storezFurFormClass.storeZ   sO   	: \2J&{{+=qA";;}5>EEGP5K//8I33G<K*1--/Y$!QQdFXFX=XAYIY,,.C%#.9!1'GP$**YUCVZ 	C GGKKGGNNGGOOC '4NVYV\V\]] Z   	:GG%#a&99	:s7   A?E E E B"E  E 	F'E<6F<Fc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS |j                  d      r;t        |j                  d            j                         xs |j                  |_	        | j                  |      }|||_        | j                  |      }|||_        |j                         D ci c]  \  }}|| j                  vs|| }}}|rt!        j"                  |d      |_        t'        j(                         |_        | j                   j-                          | j                   j/                  |       dd|j                  d	S c c}}w # t0        $ r2}	| j                   j3                          dt        |	      dcY d }	~	S d }	~	ww xY w)
Nr5   r6   r7   r   FrD   rF   zFormulario FUR actualizado.rG   )r   r:   r   r;   r
   r<   r   r   r   r   r(   r   r"   r   rH   rI   r.   rK   r,   r   rJ   r   rM   rN   r0   rO   )
r   r
   r   r)   r   rP   rQ   rR   r,   r=   s
             r   r-   zFurFormClass.updateu   sn   	:''---44\__5JKQQSC")6UVV{{=)"%gkk-&@"A"G"G"I"\S__//8I$ )33G<K&4?1*1--/Y$!QQdFXFX=XAYIY $

95 I'||~CGGNNGGOOC '4QY\Y_Y_`` Z  	:GG%#a&99	:s>   AF
 BF
 )F FA>F
 F
 
	G'G :G Gr   )__name__
__module____qualname__	frozensetrI   r   r   staticmethoddictr   r   r"   r%   r(   r   r3   r   r   rA   rS   r-    r   r   r	   r	   	   s    		
M7  d x}   D Xc]  L T 2:c :c :
:C 
:hsm 
:WZ 
::T :c :6: :t : :r   r	   )__doc__r.   r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   r	   r[   r   r   <module>r`      s#    6     " .B: B:r   