
    e                         d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 dd	l
mZ  ej        d
          Zde	iZ G d de          ZdS )a%  
Manage your Anaconda Server server-side settings

###### Set server-side settings

You can add a site named **site_name** like this:

    conda repo admin --set SETTING_NAME SETTING_VALUE

Currently supported settings are:

    - `user_channel_autocreate` - if True, a user's channel is created automatically on first login

###### Show server-side settings

Yuo can see current settings:

    conda repo admin --show

###### Set anaconda ident settings

You can set anaconda ident settings:

    conda repo admin --ident_enabled
    or
    conda repo admin --ident_disabled

    You can set anaconda ident settings with starting date and tokens:
    conda repo admin --ident-enforce-date 2020-01-01 --ident-tokens client_token,session_token,environment_token,username,hostname,environment,organization

    N)RawDescriptionHelpFormatter   )errors)SettingsFormatter)	safe_load   )SubCommandBaserepo_cliuser_channel_autocreatec                   4    e Zd ZdZd ZddZd Zd	dZd ZdS )

SubCommandadminc                 F   | j         j        r|                                  d S | j         j        r!|                     | j         j                   d S | j         j        r!|                     | j         j                   d S | j         j        s$| j         j        s| j         j        s| j         j	        rg| j         j        rdnd }| j         j        rd}| 
                    || j         j        r| j         j        nd | j         j	        r| j         j	        nd            d S t          d          )NTFzPlease use command options)argsshowshow_settingsgetsetupdate_settingsident_enabledident_disabledident_enforce_dateident_tokensupdate_conda_ident_settingsNotImplementedError)selfenableds     7lib/python3.11/site-packages/repo_cli/commands/admin.pymainzSubCommand.main1   s8   9> 	   F9= 	ty}---F9= 	  ///F I#	y'	 y+	 y%		 #i5?dd4Gy'  ,,04	0LV	,,RV*.)*@J	&&d  
 F!">???    Nc                     | j                                         }|%||vrt          j        d|z            |||         i}| j                            t          j        |                     d S )N%s is an unknown admin setting)apiget_system_settingsr   RepoCLIErrorloginfor   format_object_as_list)r   keysettingss      r   r   zSubCommand.show_settingsR   sp    8//11?("")*JS*PQQQXc]+H'=hGGHHHHHr    c                 N   i }|D ]=\  }}|t           vrt          j        d|z            t          |         |          ||<   >| j                                        }|                    |           | j                            |           | j                            d           d S )Nr"   z$Anaconda Server settings are updated)	SETTINGS_VALIDATORr   r%   r#   r$   updateupdate_system_settingsr&   r'   )r   r   datar)   valuer*   s         r   r   zSubCommand.update_settings[   s     	7 	7JC,,,)*JS*PQQQ*3/66DII8//11''111<=====r    c                    | j                                         }|                    di           }|si }|||d<   |r||d<   |rM|                    d          }|D ]}|dvrt	          j        d|z            |                    d          |d<   ||d<   | j                             |           | j                            d           d S )	Nanaconda_ident_settingsr   enable_from,)client_tokensession_tokenenvironment_tokenusernamehostnameenvironmentorganizationzInvalid token: %sselected_tokensz#Anaconda Ident settings are updated)	r#   r$   r   splitr   r%   r.   r&   r'   )r   r   datetokens_serializer*   ident_settingstokenstokens           r   r   z&SubCommand.update_conda_ident_settingsh   s   8//11!&?DD 	 N(/N9% 	1,0N=) 	L%++C00F 
K 
K !   !-.AE.IJJJ 1A0F0Fs0K0KN,-.<*+''111;<<<<<r    c                    d}|                     d||t          t                    }|                    d          }|                    dddg dd	
           |                    ddd           |                    dddd           |                    dddd           |                    dddd           |                    ddd           |                    ddd           |                    | j        |           d S ) NzAnaconda Server admin settingsr   )helpdescriptionepilogformatter_classactionsz--setr   appendz'sets a server setting value: name value)namer0   )nargsactiondefaultrD   metavarz--getrJ   zget value: name)rN   rD   z--show
store_trueFzshow all variables)rL   rM   rD   z--ident_enabledTzenable anaconda identz--ident_disabledzdisable anaconda identz--ident-enforce-dater>   z:set anaconda ident date from when conda ident is mandatoryz--ident_tokensrA   zset comma seperated list of tokens for anaconda ident. Must be one of: client_token, session_token, environment_token, username, hostname, environment, organization])r   
sub_parser)
add_parser__doc__r   add_argument_groupadd_argumentset_defaultsr   )r   
subparsersrE   parseragroups        r   rQ   zSubCommand.add_parser   s   6&&#7 ' 
 
 **955:% 	 	
 	
 	
 	GV:KLLL\5?S 	 	
 	
 	
 	(	 	 	
 	
 	
 	)	 	 	
 	
 	
 	"M 	 	
 	
 	

 	 y 	 	
 	
 	
 	v>>>>>r    )N)NN)	__name__
__module____qualname__rJ   r   r   r   r   rQ    r    r   r   r   .   sv        D@ @ @BI I I I> > >= = = =>0? 0? 0? 0? 0?r    r   )rR   loggingargparser    r   utils.formatr   
utils.yamlr   baser	   	getLoggerloggerr,   r   r\   r    r   <module>re      s    >  0 0 0 0 0 0       , , , , , , " " " " " "            		:	&	& 0; I? I? I? I? I? I? I? I? I? I?r    