U
    —âñj"  ã                   @   sð   d dl Z d dlmZ d dlmZmZ d dlmZ e  d¡Ze 	e j
¡ e  ¡ jsxejsxe  ¡ Ze e  d¡¡ e e¡ ddd	d
dgZddddddddœZdZdZdZdZdZdZdZdZdZdZeƒ Zdd„ Zdd„ Z efdd„Z!dd„ Z"dS ) é    N)Úg)ÚMongoClientÚ	ASCENDING)Údatetimezitgmanager.centrosz"%(levelname)s:%(name)s:%(message)sÚenviroÚnanooxÚscappÚpssÚfluxÚENVIROÚ
NANOOX__TSÚFLUX__TSÚScappDBZPssDBÚemailsÚdata_analytic)r   r   r
   r   r	   Znotification_emailsZanalyticÚusersZuq_centro_camera_timestampZidx_centro_timestampZidx_timestampc                   C   s   dt krtdƒt _t jS )z,Obtiene una conexion de MongoDB por request.Ú	db_clientúmongodb://localhost:27017/)r   r   r   © r   r   ú1/var/www/itgmanager/itgmanager/shared_db_utils.pyÚget_db2   s    
r   c           
   
   C   sf  t  ¡ }|dkrd}�n|dkr.d|› �}�n|dkrBd|› �}nò|dkrVd|› �}nÞ|d	krjd
|› �}nÊ|dkr~d|› �}n¶|dkr’d|› �}n¢|dkr¦d|› �}nŽ|dkrºd|› �}nz|dkrÎd|› �}nf|dkrðd|d › d|d › �}nD|dk�r4| dd¡}| dd¡}| dd¡}d |› d!|› d"|› �}|||d#|› d$|› d%| ¡ › �d&œ}	|  |	¡ d S )'NÚrenew_passwordu   reestablecio su contraseÃ±aÚadd_userzcreo al usuario Ú	edit_userzedito al usuario Údelete_userzelimino al usuario Ú
add_centerzcreo el centro Z
edit_labelzedito el nombre visible de Úconfirm_detected_centerzconfirmo el centro detectado Úedit_centerzedito el centro Údelete_centerzelimino el centro Úadd_scapp_thresholdz.edito los umbrales de Region Scapp del centro Úadd_center_permissionu,   agregÃ³ automÃ¡ticamente permiso del centro é   z al ususario r   Zread_notificationÚserviceú?ÚcentroÚmessagezSin detalleu   confirmÃ³ lectura de alerta 'z' (z) en centro zEl usuario Ú z a las )ÚdateÚusernameÚtypeÚmsg)r   ÚnowÚgetÚ	isoformatÚ
insert_one)
Ú
collectionr(   Úedit_objectÚlog_typeÚ	timestampÚactionZsvcr$   Z
alerta_msgZ	log_entryr   r   r   Úinsert_log_in_user_history:   sF    
ü
r4   c                 C   sÜ   | j |f}|tkr| | S tt| jd|id�ƒdƒ}|rT| d¡dkrTt|› d�ƒ‚|dkrv|  |¡ td|› d�ƒ | | }|j	d	t
fd
t
fdt
fgtdd� |j	d	t
fdt
fgtd� |j	dt
fgtd� t |¡ |S )uA   Garantiza el esquema normal requerido por la analÃ­tica de SCAPP.Úname)ÚfilterNr)   Ú
timeseriesuO    aÃºn es time-series; ejecute la migraciÃ³n manual antes de iniciar el backend.u   [Init] ColecciÃ³n normal 'z	' creada.Ú	centro_idÚ	camera_idr2   T)r5   Úunique)r5   )r5   Ú_analytic_schema_readyÚnextÚiterÚlist_collectionsr,   ÚRuntimeErrorÚcreate_collectionÚprintÚcreate_indexr   ÚANALYTIC_UNIQUE_INDEX_NAMEÚANALYTIC_QUERY_INDEX_NAMEÚANALYTIC_TIMESTAMP_INDEX_NAMEÚadd)ÚdatabaseÚcollection_nameÚ	cache_keyÚinfor/   r   r   r   Úensure_analytic_collectiond   s<    
þÿ
ýþþ
rK   c               
   C   sf   t dƒ} zNzt| t ƒ tdƒ W n0 tk
rR } ztd|› �ƒ W 5 d}~X Y nX W 5 |  ¡  X dS )u<   Verifica la colecciÃ³n de analÃ­tica al iniciar el servidor.r   u7   [Init] ColecciÃ³n e Ã­ndices de analÃ­tica verificados.u8   [Error] Fallo al verificar la colecciÃ³n de analÃ­tica: N)r   ÚcloserK   ÚSCAPP_DATABASE_NAMErA   Ú	Exception)ÚclientÚerrorr   r   r   Úensure_analytic_indexes‰   s    $rQ   )#ÚloggingÚflaskr   Úpymongor   r   r   Ú	getLoggerÚlog_centrosÚsetLevelÚINFOÚhandlersÚStreamHandlerZ_handler_centrosÚsetFormatterÚ	FormatterÚ
addHandlerÚSERVICIOS_SOPORTADOSÚSERVICES_DB_MAPÚUSER_DATABASE_NAMEÚENVIRO_DATABASE_NAMEÚNANOOX_DATABASE_NAMErM   ÚFLUX_DATABASE_NAMEÚEMAIL_COLLECTION_NAMEZANALYTIC_COLLECTION_NAMErC   rD   rE   Úsetr;   r   r4   rK   rQ   r   r   r   r   Ú<module>   sB   

ù*%