
    5,h                     4    d Z ddlZddlZ G d d          ZdS )uC   
Configuraciones del sistema y gestión de preferencias de usuario
    Nc                   T    e Zd ZdZddZd Zd Zd Zd Zd Z	dd
Z
d ZddZd ZdS )Configu>   Clase para manejar la configuración y preferencias de usuarioNc                    |p_t           j                            t           j                            t           j                            t
                              dd          | _        t           j                            | j                  rKt          | j        dd          5 }t          j
        |          | _        ddd           dS # 1 swxY w Y   dS ddd	d
ddddd
d
di i d| _        |                                  dS )u   
        Inicializa la configuración
        
        Args:
            config_file (str, optional): Ruta al archivo de configuración
        z..zconfig.jsonrutf-8encodingNzAsistente Inteligente Aurisz1.0.0esT)nameversionlanguagedebugmediumF)default_font_sizehigh_contrast_modesimplified_textaudio_feedbackextended_descriptions)appaccessibilityapi_keysusers)ospathjoindirnameabspath__file__config_fileexistsopenjsonloadconfig_save_config)selfr   fs      GD:\NESTOR\Documents\Tesis\Asistente inteligente\backend\utils\config.py__init__zConfig.__init__
   sP    ' 
"',,GOOBGOOH5566+
 +
 7>>$*++ 	 d&g>>> +!"ill+ + + + + + + + + + + + + + + + + + :& $!	  *2*/',&*-1" "# DK. s   #C

CCc                    t          j        t           j                            | j                  d           t          | j        dd          5 }t          j        | j        |d           ddd           dS # 1 swxY w Y   dS )	u&   Guarda la configuración en el archivoT)exist_okwr   r      )indentN)	r   makedirsr   r   r   r!   r"   dumpr$   )r&   r'   s     r(   r%   zConfig._save_config6   s     	BGOOD$455EEEE$"C'::: 	0aIdk1Q////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   A::A>A>c                     | j         d         S )u   
        Obtiene la configuración general de la aplicación
        
        Returns:
            dict: Configuración de la aplicación
        r   r$   r&   s    r(   get_app_configzConfig.get_app_config>   s     {5!!    c                     | j         d         S )u   
        Obtiene la configuración de accesibilidad predeterminada
        
        Returns:
            dict: Configuración de accesibilidad
        r   r2   r3   s    r(   get_accessibility_configzConfig.get_accessibility_configG   s     {?++r5   c                 B    | j         d                             |          S )z
        Obtiene una clave de API para un servicio
        
        Args:
            service (str): Nombre del servicio
            
        Returns:
            str: Clave de API o None si no existe
        r   )r$   get)r&   services     r(   get_api_keyzConfig.get_api_keyP   s     {:&**7333r5   c                 N    || j         d         |<   |                                  dS )z
        Establece una clave de API para un servicio
        
        Args:
            service (str): Nombre del servicio
            key (str): Clave de API
        r   Nr$   r%   )r&   r:   keys      r(   set_api_keyzConfig.set_api_key\   s-     ,/J(r5   	anonymousc                 z    || j         d         vri |                                 d|iS | j         d         |         S )z
        Obtiene las preferencias de un usuario
        
        Args:
            user_id (str): Identificador del usuario
            
        Returns:
            dict: Preferencias del usuario
        r   user_id)r$   r7   )r&   rB   s     r(   get_user_preferenceszConfig.get_user_preferencesg   sW     $+g...//117  
 {7#G,,r5   c                     d| j         vr
i | j         d<   || j         d         v r'| j         d         |                             |           n|| j         d         |<   |                                  dS )z
        Guarda las preferencias de un usuario
        
        Args:
            user_id (str): Identificador del usuario
            preferences (dict): Preferencias a guardar
        r   N)r$   updater%   )r&   rB   preferencess      r(   save_user_preferenceszConfig.save_user_preferencesz   s     $+%%#%DK  dk'***K )00====,7DK ) 	r5   Tc                 N    || j         d         d<   |                                  dS )u   
        Activa o desactiva el modo de depuración
        
        Args:
            debug (bool): Estado del modo de depuración
        r   r   Nr=   )r&   r   s     r(   set_debug_modezConfig.set_debug_mode   s-     ',E7#r5   c                 N    || j         d         d<   |                                  dS )u   
        Establece el idioma predeterminado de la aplicación
        
        Args:
            language (str): Código de idioma
        r   r   Nr=   )r&   r   s     r(   set_default_languagezConfig.set_default_language   s-     *2E:&r5   )N)r@   )T)__name__
__module____qualname____doc__r)   r%   r4   r7   r;   r?   rC   rG   rI   rK    r5   r(   r   r      s        HH*  *  *  * X0 0 0" " ", , ,
4 
4 
4	 	 	- - - -&  (       r5   r   )rO   r   r"   r   rP   r5   r(   <module>rQ      s_     
			 Y Y Y Y Y Y Y Y Y Yr5   