o
    j                     @  s   d Z ddlmZ ddlmZmZ ddlmZmZmZm	Z	m
Z
mZmZ ddlmZmZ ddlmZmZmZ edeZeded	d
 Zededd Zejddgdedd Zejddgdedd Zededd ZdS )z9Vista lista de solicitudes + acciones aprobar / rechazar.    )annotations)datetime	timedelta)	Blueprintflashjsonifyredirectrender_templaterequesturl_for)current_userlogin_required)LicenciaEmpresa	Solicituddbsolicitudes/c                  C  s   t jdd} tj}| r| dkr|tj| k}|tj	 }|
d }tjjdd tjjdd tjjdd d}td	|| |d
S )Nestado	PendienteTodasi  EstadoAprobada	Rechazada)r   r   r   zsolicitudes/lista.html)r   estado_filtroconteos)r
   argsgetr   queryfilterr   order_byFechaSolicituddesclimitall	filter_bycountr	   )r   qr   r    r(   0/var/www/html/LicenciasMiG/routes/solicitudes.pylista   s    r*   z/solicitud/<int:solicitud_id>c                 C  s   t j| }td|dS )Nzsolicitudes/detalle.html)	solicitud)r   r   
get_or_404r	   )solicitud_idr+   r(   r(   r)   detalle,   s   r.   z%/solicitud/<int:solicitud_id>/aprobarPOST)methodsc              
   C  s2  t j| }|jdkrtd|j dd ttd| dS tj	dd}tj	d	p+d

 }tj	d}d }|dkrDt tdd }n6|dkrRt tdd }n(|dkr`t tdd }n|dkrz|rzzt|d}W n tyy   d }Y nw zxtd1i d|jd|jd|jd|jd|jd|jd|jdkdt d|jd|jd |jd!|jd"|jd#|jd$|jd%|jd&d'd(d)}t j!"| d*|_t |_#t$j%|_&|pd |_'||_(t j!)  td+|  d,d- W n  t*y } zt j!+  td.| d/ W Y d }~nd }~ww ttd0S )2Nr    La solicitud ya esta en estado "". No se puede modificar.warningsolicitudes.detaller-   duracion
permanenteobservaciones fecha_vencimientomensual   )days
trimestralZ   anualim  customz%Y-%m-%dnitrazonsocialnombrecomercial	direcciontelefonocelularlicenciatemporalSIfecharegistroresponsablecorreoresponsabletelefonoponsablemotivolicenciaclaveproductonombreequipo	osversionclavemeslicenciaactivaTbloquearlicenciaFr   Solicitud #z2 aprobada. El cliente la recibira automaticamente.successzError al aprobar: dangersolicitudes.listar(   ),r   r   r,   r   r   r   r   r
   formr   stripr   utcnowr   strptime
ValueErrorr   NITNombreEmpresaNombreComercial	DireccionTelefonoCelularLicenciaTemporalResponsableCorreoResponsableTelefonoResponsableMotivoClaveProductoNombreEquipo	OSVersionClaveMesr   sessionaddFechaResolucionr   UsernameUsuarioAprobadorObservacionesFechaVencimientocommit	Exceptionrollback)r-   r+   r6   r8   fecha_venc_str
fecha_venclicenciaer(   r(   r)   aprobar6   s   

	




r{   z&/solicitud/<int:solicitud_id>/rechazarc              
   C  s   t j| }|jdkrtd|j dd ttd| dS tj	dp$d
 }|s6td	d ttd| dS d
|_t |_tj|_||_ztj  td|  dd W n tyt } ztj  td| d W Y d }~nd }~ww ttdS )Nr   r1   r2   r3   r4   r5   motivor9   z"Debe indicar un motivo de rechazo.r   rU   z rechazada.infozError al rechazar: rW   rX   )r   r   r,   r   r   r   r   r
   rY   r   rZ   r   r[   ro   r   rp   rq   rr   r   rm   rt   ru   rv   )r-   r+   r|   rz   r(   r(   r)   rechazary   s*   




r~   z/api/pendientes/countc                  C  s   t jjdd } t| dS )Nr   r   )
pendientes)r   r   r%   r&   r   )nr(   r(   r)   count_pendientes   s   
r   N)__doc__
__future__r   r   r   flaskr   r   r   r   r	   r
   r   flask_loginr   r   modelsr   r   r   __name__bprouter*   r.   r{   r~   r   r(   r(   r(   r)   <module>   s,    $
A