
    yh                        d dl Z d dlZe j                  j                  d       d dlmZ d dlmZ d dlZd dl Z d dlZd dlZd dl	m
Z
 d dlmZ ej                  j                  ej                  j                  e            Zej                  j                  ed      Z e
e        ede        d Zd	 Zd
 Zd Zd Zd Zy)    Nz/var/www/html/config)get_connection)datetime)load_dotenvz.envzArchivo .env cargado desde: c                     t         j                  j                  t              s	 t	        t        d      5 } 	 ddd       i }t	        t        d      5 } | D ]Z  }d|v s|j                         j                  dd      \  }}|j                         j                  d      ||j                         <   \ 	 ddd       |S # 1 sw Y   xY w# t
        $ r}t        d|        i cY d}~S d}~ww xY w# 1 sw Y   |S xY w)ul   
    Función para obtener las variables del archivo .env.
    Si el archivo no existe, lo crea vacío.
    wN Error al crear el archivo .env: r=   ")	ospathexistsenv_file_pathopen	Exceptionprintstripsplit)feenv_variableslinekeyvalues         R/var/www/dev.api.imparables.com.co/api_imparables/crm/configuraciones/variables.pyobtener_variables_envr   %   s    
 77>>-(	mS) Q M	mS	! FQ 	FDd{!ZZ\//Q7
U-2[[]-@-@-Eciik*	FF    	4QC89I	
F sF   C B<C 
C.AC.<CC 	C+C& C+&C+.C8c                      t               } | dddS 	 | j                  d      }d}|j                  |       |j                         }|j	                          | j	                          |S # t
        $ r}t        d|        i cY d}~S d}~ww xY w)	u   
    Función para obtener las variables de la base de datos.
    Esta función debe utilizar tu lógica de conexión a la base de datos.
    Nr   u%   Error de conexión a la base de datossuccessmessageT)
dictionaryz.SELECT dato, valor FROM cuenta_servicios_datosz!Error al obtener datos de la BD: )r   cursorexecutefetchallcloser   r   )
conexionBDr#   queryresultr   s        r   obtener_variables_desde_bdr*   @   s      !J)PQQ""d"3@u" 1!56	s   AA* *	B3BBBc                      t          dt        j                         j                  d       } 	 t	        j
                  t         |        y# t        $ r}t        d|        Y d}~yd}~ww xY w)uQ   
    Función para crear un respaldo del archivo .env antes de actualizarlo.
    z.bak-z%Y%m%d%H%M%SzError al crear respaldo: N)r   r   nowstrftimer   renamer   r   )backup_pathr   s     r   backup_env_filer0   Y   s\     #O5)@)@)P(QRK/
		-- /)!-../s   A	 		A*A%%A*c                 J    d| v sd| v sd| v st        j                  d|       ryy)u   
    Función para detectar si un valor necesita comillas.
    Se detectan caracteres especiales como:
    - Espacios en blanco
    - Asteriscos
    - Símbolos como #, %, etc.
     r   *z[^a-zA-Z0-9_/-]TF)research)valors    r   necesita_comillasr7   d   s,     e|se|se|ryyASUZ7[    c                    t               }|st        d       yt                | D ]Y  }|d   j                         }|d   j                         }t	        |      rd| d}||v r|||<   D|||<   t        d| d|        [ t        d       	 t        t        d	      5 }|j                         D ]  \  }}|j                  | d
| d        	 ddd       y# 1 sw Y   yxY w# t        $ r}t        d|        Y d}~yd}~ww xY w)uu   
    Función para actualizar o insertar las variables en el archivo .env con las obtenidas de la base de datos.
    z<Error: No se pudieron obtener las variables del archivo .envFdator6   r   zInsertada nueva variable: z = z'Contenido actualizado del archivo .env:r   r
   
NTz&Error al escribir en el archivo .env: )
r   r   r0   r   r7   r   r   itemswriter   )	variables_bdr   variabler:   r6   r   r   r   r   s	            r   actualizar_archivo_envr@   q   s4    *+MLM  ! A%%'!'') U#waLE= "'M$ #(M$.tfCw?@A 

34-% 	,+113 ,
U3%qr*+,	, 	,  6qc:;s6   C# 0CC# C C#  C# #	D,C??Dc                     t         j                  j                  t              s8t	        dt                	 t        t        d      5 } 	 ddd       t	        d       t               }|st	        d       dd	dS t        |      rd
ddS dddS # 1 sw Y   ExY w# t        $ r }t	        d|        dd| dcY d}~S d}~ww xY w)u   
    Función principal que se invoca desde tu aplicación para actualizar el archivo .env.
    Si el archivo .env no existe, lo crea antes de proceder con la actualización.
    z5El archivo .env no existe. Creando archivo nuevo en: r   Nz!Archivo .env creado exitosamente.r   r   r   z@Error: No se pudieron obtener las variables de la base de datos.z2Error al obtener las variables de la base de datosr   z&Archivo .env actualizado correctamentez#Error al actualizar el archivo .env)	r   r   r   r   r   r   r   r*   r@   )r   r   r>   s      r   variables_entornorB      s     77>>-(Em_UV	UmS) Q56 ./L PQ)]^^ l+)QRR)NOO'   	U4QC89 /OPQs-STT	Us5   B B	B BB 	C"B=7C=C)sysr   r   appendcnxpdor   r   hashlibr4   dotenvr   dirnameabspath__file__current_dirjoinr   r   r   r*   r0   r7   r@   rB    r8   r   <module>rN      s    
 	 & ' !   
 	 	   ggoobggooh78[&1 M  $]O4 562/'ZPr8   