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 ddlmZ ddlmZmZ ddlmZ ddlmZmZ dd	lmZ dd	lmZ dd
lmZ dddZe Zedkrfej dej!ej"d dS dS )a  
LicenciasMiG - panel web dedicado a aprobacion de solicitudes de licencia MIG.

Rutas servidas:
  GET  /login
  POST /login                              -> autenticar admin
  GET  /                                   -> lista de solicitudes
  GET  /solicitud/<id>                     -> detalle
  POST /solicitud/<id>/aprobar             -> aprobar (inserta en LicenciasEmpresas)
  POST /solicitud/<id>/rechazar            -> rechazar con motivo
  GET  /api/pendientes/count               -> JSON {pendientes: N}
  ANY  /SolicitudesService.asmx[?wsdl]     -> SOAP consumido por el cliente MIG
  GET  /health                             -> liveness
  GET  /init-db                            -> bootstrap unica vez

Se conecta a la BD compartida con el panel viejo (LicenciasMIG).
    )annotations)datetime	timedelta)Flaskjsonifyredirectrender_templaterequesturl_for)CORS)LoginManagercurrent_user)Config)Usuariodb)bp)register_soapreturnr   c                  C  s   t t} | jt t| dd t|  t }||  d|_	|j
dd }|jdd }| t | t t|  | jdd	 }| d
dd }| S )NT)supports_credentialsauth.login_pagec              	   S  s,   z	t jt| W S  ttfy   Y d S w )N)r   querygetint	TypeError
ValueError)user_id r   !/var/www/html/LicenciasMiG/app.py	load_user-   s
   zcreate_app.<locals>.load_userc                   S  s.   t jdrtddddfS ttdt jdS )Nz/api/FzNo autenticado)okerrori  r   )next)r	   path
startswithr   r   r
   r   r   r   r   unauthorized4   s   z create_app.<locals>.unauthorizedc                   S  s   dt iS )Nr   )r   r   r   r   r   inject_userB   s   zcreate_app.<locals>.inject_userz/healthc                   S  s   t dt  d dS )NTZ)r   ts)r   r   utcnow	isoformatr   r   r   r   healthG   s   zcreate_app.<locals>.health)r   __name__configfrom_objectr   r   r   init_appr   
login_viewuser_loaderunauthorized_handlerregister_blueprintauth_bpsolicitudes_bpr   context_processorroute)applogin_managerr   r$   r%   r*   r   r   r   
create_app!   s&   







r9   __main__z0.0.0.0)hostportdebugN)r   r   )#__doc__
__future__r   r   r   flaskr   r   r   r   r	   r
   
flask_corsr   flask_loginr   r   r,   r   modelsr   r   routes.authr   r3   routes.solicitudesr4   soap_servicer   r9   r7   r+   runPORTDEBUGr   r   r   r   <module>   s      
-