
    Mhy                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ dd	lmZmZmZ dd
lmZ  G d de
e	e          ZdS )z-Tornado handlers for frontend config storage.    )annotationsN)Any)ValidationError)ExtensionHandlerJinjaMixinExtensionHandlerMixin)web   )SchemaHandlerget_settingssave_settings)
translatorc                  d    e Zd ZdZ	 dddZej        ddd            Zej        dd            ZdS )SettingsHandlerzA settings API handler.Nnamestrapp_settings_dirschemas_dirsettings_dirlabextensions_path	list[str]	overridesdict[str, Any] | Nonekwargsr   returnNonec                b    t          j        | |||||           t          j        | |           dS )zInitialize the handler.N)r
   
initializer   )selfr   r   r   r   r   r   r   s           b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyterlab_server/settings_handler.pyr   zSettingsHandler.initialize   sD     	 "K?QS\	
 	
 	
 	(t44444     schema_namec           
        |                                  }t          j        |           |                     dd          dk    }t	          | j        | j        | j        | j        || j	        t          j
        |          \  }}|D ]}|r| j                            |           |                     t          j        |                    S )aF  
        Get setting(s)

        Parameters
        ----------
        schema_name: str
            The id of a unique schema to send, added to the URL

        ## NOTES:
            An optional argument `ids_only=true` can be provided in the URL to get only the
            ids of the schemas instead of the content.
        ids_onlyr!   true)r   r"   r   r   r$   )get_current_localer   
set_localeget_argumentr   r   r   r   r   r   translate_schemalogwarningfinishjsondumps)r   r"   localer$   resultwarningsws          r   getzSettingsHandler.get%   s      ((**f%%%$$Z44>'!#6#n!2	
 	
 	
  	$ 	$A $  ###{{4:f--...r    c                   | j         }| j        }| j        }d}d}d}d}|st          j        d|          | j        j                                                            d          }		 t          j
        |	          d         }
t          ||||
|| j                   n# t          j        j        $ r+}t          j        d|t          |          z            d	d	}~wt           t"          f$ r t          j        d|          d	t$          $ r+}t          j        d|t          |          z            d	d	}~ww xY w|                     d
           d	S )zUpdate a settingzNo current settings directoryzFailed parsing JSON payload: %szAInvalid format for JSON payload. Must be in the form {'raw': ...}zFailed validating input: %si  zutf-8rawi  N   )r   r   r   r   	HTTPErrorrequestbodystripdecoder-   loadsr   r   decoderJSONDecodeErrorr   KeyError	TypeErrorr   
set_status)r   r"   r   r   r   settings_errorinvalid_json_errorinvalid_payload_format_errorvalidation_errorraw_payloadraw_settingses               r   putzSettingsHandler.putL   s    N	&(8>O 	% 9 	5-^444l'--//66w??	J:k2259L'    |+ 	L 	L 	L-%7#a&&%@AAtK)$ 	M 	M 	M-%ABBL 	J 	J 	J-%5A%>??TI	J 	s$   '3B D3/&C3D3&D..D3)N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r!   )r"   r   r   r   )r"   r   r   r   )	__name__
__module____qualname____doc__r   r   authenticatedr3   rI    r    r   r   r      s        !! ,05 5 5 5 5  	$/ $/ $/ $/ $/L 	! ! ! ! ! !r    r   )rM   
__future__r   r-   typingr   
jsonschemar    jupyter_server.extension.handlerr   r   tornador   settings_utilsr
   r   r   translation_utilsr   r   rO   r    r   <module>rW      s    3 3 # " " " " "        & & & & & & ^ ^ ^ ^ ^ ^ ^ ^       F F F F F F F F F F ) ) ) ) ) )\ \ \ \ \+-G \ \ \ \ \r    