PTK+% * d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm Z d dl mZmZ d dl mZmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d d lmZ d d lmZ d dlm Z d dlm!Z" G d de Z# G d de Z$ G d de% Z&dS ) )absolute_importN)deepcopy)IntEnumauto)IterableOptionalUnion)ALL_OPTIMIZATION_FEATURESFeature) setup_logging)get_relative_docrootcreate_clwpos_dir_if_not_existsis_run_under_userget_pw) is_wp_path) constants) WposError)gettextc e Zd ZdZdS )ConfigErrorz^ Used for all exceptions during handling clwpos user config in UserConfig methods N)__name__ __module____qualname____doc__ py/clwpos/user/config.pyr r " s Dr r c J e Zd Z e Z e Z e ZdS )LicenseApproveStatusN)r r r r NOT_REQUIREDNOT_APPROVEDAPPROVEDr r r r r * s/ 466L466LtvvHHHr r c e Zd ZdZej dej ej Z ej dZi edZdZ d$deej z fd Zd Zd Zdefd Zd Zd Zd ZdefdZ d%dedededee def dZdedefdZdefdZ d&de!def dededdfdZ"dedededdfdZ#d Z$dede%e fd Z&d!e'fd"Z(d# Z)dS )' UserConfigzQ Class to manage clwpos user config - read, write, set params in config. z {homedir}mb)docrootsmax_cache_memory.FTusernamec |s| t |t r.|| _ t | | _ | j j | _ n|| _ |j | _ |j | _ | j | j | _ |rt t | _ d S t j d | _ d S )N)r) )homedirr$ )_validate_permissions isinstancestrr) r pwpw_dirr+ pw_nameCONFIG_PATHformatconfig_pathr r _loggerlogging getLogger)selfr) allow_root setup_logss r __init__zUserConfig.__init__A s )&&(((h$$ + %DMh///DG7>DLLDG$,DM#?DL+224<2HH ;(22DLLL",\::DLLLr c Z t st t d d S )Nz&Trying to use UserConfig class as root)r r _r8 s r r, z UserConfig._validate_permissionsX s4 "" Ka HIIJJJ K Kr c < t | j d 5 }t j | cddd S # 1 swxY w Y dS # t $ r: t j }t t d | j |d w xY w)zo Reads config from self.config_path DO NOT USE THIS DIRECTLY! USE get_config INSTEAD! rNz@Error while reading config %(config_path)s: %(exception_string)s)r4 exception_stringmessagecontext) openr4 jsonloadsread Exception traceback format_excr r= )r8 f exc_strings r read_configzUserConfig.read_config\ s d&,, ,z!&&((++ , , , , , , , , , , , , , , , , , , "-//J\]](,(8jYY s. A &A A AA AA ABconfigc H t | j t j |dd }t | j d 5 }| | ddd dS # 1 swxY w Y dS # t $ r%}t t d d|i d}~ww xY w) z= Writes config (as json) to self.config_path T)indent sort_keyswNzDAttempt of writing to config file failed due to error: %(exception)s exceptionrB ) r r/ rF dumpsrE r4 writerI r r= )r8 rO config_jsonrL es r write_configzUserConfig.write_configl s (000 *VAFFFKd&,, %$$$ % % % % % % % % % % % % % % % % % % abb$a( s; ,A2 A%A2 %A))A2 ,A)-A2 2 B!< BB!c L t j | j S )z? Checks if user customized his config already. )ospathexistsr4 r> s r is_default_configzUserConfig.is_default_config| s 7>>$"23333r c d|v rkt |d t rR|d D ]9\ }}t |t r| | j d 6dS dS dS )z| Remove invalid paths from the config. Specifically, remove the INVALID_PATH_KEY from each docroot. r&