U
    —âñj  ã                   @   sn   d dl m Z  d dlZdZdZdZdddd	d
gZe e¡Zee Zee Z	dd„ Z
ddd„Zdd„ Zdd„ ZdS )é    )ÚdatetimeNzmongodb://localhost:27017/ÚusersÚciclosÚenviroÚnanooxÚscappÚpssÚfluxc               
   C   s‚   dd„ t D ƒ} d| d< tdƒ zt| dd� tdƒ W nF tk
r| } z(td	|› d
�ƒ t| dd� tdƒ W 5 d }~X Y nX d S )Nc                 S   s   i | ]
}|d “qS )é   © )Ú.0Zservr   r   úG/var/www/itgmanager/itgmanager/verificacion_status_servicios_centros.pyÚ
<dictcomp>   s      z<verificacion_status_servicios_por_centro.<locals>.<dictcomp>r
   Ú	centro_idu%   Iniciando validaciÃ³n de servicios...F)Úmodo_recuperacionu#   ActualizaciÃ³n Realizada con Ã©xitozError detectado (u"   ). Iniciando modo recuperaciÃ³n...Tu,   RecuperaciÃ³n/CreaciÃ³n Realizada con Ã©xito)Ú	SERVICIOSÚprintÚprocesar_centrosÚ	Exception)Zprojection_fieldsÚer   r   r   Ú(verificacion_status_servicios_por_centro   s    r   Fc                 C   sr   t ji | d�}|D ]Z}| d¡}tD ]F}| |¡}|r$|sRt| d¡| d¡ƒ}nd}t||| d¡|ƒ q$qdS )z­
    Itera sobre los centros y sus servicios.
    Si modo_recuperacion es False, calcula el status por fecha.
    Si modo_recuperacion es True, fuerza el status a None.
    )Ú
projectionr   ÚinitÚfinNÚstatus)Úciclos_collectionÚfindÚgetr   Úverificar_rango_fechasÚactualizar_status_generico)r   r   ÚcursorÚdocr   ÚservicioZdata_servicioZnuevo_statusr   r   r   r   "   s    

r   c                 C   sV   ||krRd| i}|› d�}d||ii}t j||dd� td|› d|› d| › �ƒ n d	S )
u~   
    FunciÃ³n Ãºnica para actualizar cualquier servicio.
    Construye la query dinÃ¡micamente usando el nombre_servicio.
    r   z.statusz$setT)ÚupsertzStatus 'z' actualizado a z en centro N)r   Ú
update_oner   )r   Únombre_servicioZstatus_actualZstatus_nuevoÚfiltroZcampo_a_actualizarÚupdate_queryr   r   r   r   <   s    
r   c                 C   sb   | r|sdS z:t  | d¡}t  |d¡}t  ¡ }||  ko@|kn  W S  tk
r\   Y dS X d S )NFz%Y-%m-%d)r   ÚstrptimeÚnowÚ
ValueError)Úfecha_inicio_strÚfecha_fin_strÚfecha_inicioÚ	fecha_finÚfecha_actualr   r   r   r   P   s    r   )F)r   ÚpymongoZ	MONGO_URIÚDB_NAMEZCOLLECTION_NAMEr   ÚMongoClientÚclientÚuser_dbr   r   r   r   r   r   r   r   r   Ú<module>   s   

