o
    i                     @  s  d Z ddlmZ ddlZddlmZmZ ddl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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
lmZ  dd
l!mZ" dd
l#mZ$ ddl%m&Z& e  dddZ'e' Z(e)dkre(j*dde(j+d d dS dS )a8  
LicenciasMIG - aplicacion Flask que reemplaza al sistema antiguo (179.50.90.179).

Sirve:
  /                     -> Dashboard admin (HTML)
  /login                -> Login de admin
  /api/v1/...           -> REST JSON para el panel
  /LicenciasService.asmx-> SOAP compatible con el cliente MIG (Web Reference)
    )annotationsN)datetime	timedelta)load_dotenv)Flaskjsonifyredirectrender_templaterequesturl_for)CORS)LoginManagercurrent_userlogin_required)Usuariodb)bp)register_soapreturnr   c                    s  t t tdd} tdd}tdd}tdd}td	d
}tdddd}d| d| d|  d| d| d| d jd< d jd< tdd jd< tdd dv  jd< tdd  jd!< d" jd#< d$ jd%< t d"d& t	
  t }|
  d'|_|jd(d) }|jd*d+ } t  t  jtd,d-  jtd.d-  jtd/d-  jtd0d- t   jd1d2 }	 d3d4d5 }
 d6 fd7d8} d9 fd:d;} d<d=d> } S )?N	DB_SERVER	localhostDB_PORT1433DB_DATABASELicenciasMIGDB_USERNAMEsaDB_PASSWORD 	DB_DRIVERzODBC Driver 17 for SQL Server +zmssql+pyodbc://:@/z?driver=z'&TrustServerCertificate=yes&Encrypt=yesSQLALCHEMY_DATABASE_URIFSQLALCHEMY_TRACK_MODIFICATIONSFLASK_SECRET_KEYzcambia-esto
SECRET_KEYFLASK_DEBUGFalse)1trueyesDEBUG   )daysREMEMBER_COOKIE_DURATIONTSESSION_COOKIE_HTTPONLYLaxSESSION_COOKIE_SAMESITE)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 )N/api/FzNo autenticadookerrori  r6   )next)r
   path
startswithr   r   r   r=   r=   r=   r>   unauthorizedF   s   z create_app.<locals>.unauthorizedz/api/v1/empresas)
url_prefixz/api/v1/licenciasz/api/v1/usuariosz/api/v1/logsc                   S  s   dt iS )Nr   )r   r=   r=   r=   r>   inject_userX   s   zcreate_app.<locals>.inject_user  c                 S  s(   t jdrtddddfS tddfS )Nr@   FzNo encontradorA   rJ   404.html)r
   rE   rF   r   r	   )_er=   r=   r>   	not_found]   s   zcreate_app.<locals>.not_found  c                   s8    j |  tjdrtddddfS tddddfS )Nr@   FzError internorA   rN   rK   )mensaje)logger	exceptionr
   rE   rF   r   r	   )eappr=   r>   internal_errorc   s   z"create_app.<locals>.internal_errorz/init-dbc                    s      A t  tjjdd s8tdddddd} | d tj	|  tj
  tdd	d
W  d    S tddd
W  d    S 1 sHw   Y  d S )Nadmin)UsernameAdministradorzadmin@migsistemas.comAdminT)rW   NombreCompletoEmailRolActivoadmin123z/BD inicializada. Usuario admin/admin123 creado.)rB   rO   zBD ya inicializada.)app_contextr   
create_allr   r7   	filter_byfirstset_passwordsessionaddcommitr   )urS   r=   r>   init_dbk   s"   




$zcreate_app.<locals>.init_dbz/healthc                   S  s   t dt  d dS )NTZ)rB   ts)r   r   utcnow	isoformatr=   r=   r=   r>   health}   s   zcreate_app.<locals>.health)r   __name__osgetenvreplaceconfiglowerr   r   r   init_appr   
login_viewuser_loaderunauthorized_handlerregister_blueprintauth_bppages_bpempresas_bplicencias_bpusuarios_bplogs_bpr   context_processorerrorhandlerroute)	db_serverdb_portdb_namedb_userdb_pass	db_driverlogin_managerr?   rG   rI   rM   rU   rh   rm   r=   rS   r>   
create_app    sX    











r   __main__z0.0.0.0i  r.   )hostportdebug)r   r   ),__doc__
__future__r   ro   r   r   dotenvr   flaskr   r   r   r	   r
   r   
flask_corsr   flask_loginr   r   r   modelsr   r   routes.authr   ry   routes.empresasr{   routes.licenciasr|   routes.logsr~   routes.pagesrz   routes.usuariosr}   soap_servicer   r   rT   rn   runrr   r=   r=   r=   r>   <module>   s,    	 
d