(config: dict)
| 99 | |
| 100 | |
| 101 | def evaluate_and_patch_config(config: dict) -> dict: |
| 102 | # Update settings for 'LOG_FILE', 'SQLITE_PATH', 'SESSION_DB_PATH', |
| 103 | # 'AZURE_CREDENTIAL_CACHE_DIR', 'KERBEROS_CCACHE_DIR', 'STORAGE_DIR' |
| 104 | # of DATA_DIR is user defined |
| 105 | data_dir_dependent_settings = \ |
| 106 | ['LOG_FILE', 'SQLITE_PATH', 'SESSION_DB_PATH', |
| 107 | 'AZURE_CREDENTIAL_CACHE_DIR', 'KERBEROS_CCACHE_DIR', 'STORAGE_DIR'] |
| 108 | |
| 109 | if 'DATA_DIR' in custom_config_settings: |
| 110 | for setting in data_dir_dependent_settings: |
| 111 | if setting not in custom_config_settings: |
| 112 | data_dir = custom_config_settings['DATA_DIR'] |
| 113 | file_dir_name = os.path.basename(config.get(setting)) |
| 114 | config.update( |
| 115 | {setting: os.path.join(data_dir, file_dir_name)}) |
| 116 | |
| 117 | # To use psycopg3 driver, need to specify +psycopg in conn URI |
| 118 | if 'CONFIG_DATABASE_URI' in custom_config_settings: |
| 119 | custom_config_settings['CONFIG_DATABASE_URI'] = \ |
| 120 | normalize_database_uri( |
| 121 | custom_config_settings['CONFIG_DATABASE_URI']) |
| 122 | |
| 123 | # Finally update config user configs |
| 124 | config.update(custom_config_settings) |
| 125 | |
| 126 | # Override DEFAULT_SERVER value from environment variable. |
| 127 | if 'PGADMIN_CONFIG_DEFAULT_SERVER' in os.environ: |
| 128 | config['DEFAULT_SERVER'] = os.environ['PGADMIN_CONFIG_DEFAULT_SERVER'] |
| 129 | |
| 130 | # Disable USER_INACTIVITY_TIMEOUT when SERVER_MODE=False |
| 131 | if not config.get('SERVER_MODE'): |
| 132 | config['USER_INACTIVITY_TIMEOUT'] = 0 |
| 133 | # Enable PSQL in Desktop Mode. |
| 134 | config['ENABLE_PSQL'] = True |
| 135 | |
| 136 | if config.get('SERVER_MODE'): |
| 137 | config.setdefault('USE_OS_SECRET_STORAGE', False) |
| 138 | config.setdefault('KEYRING_NAME', '') |
| 139 | else: |
| 140 | k_name = keyring.get_keyring().name |
| 141 | # Setup USE_OS_SECRET_STORAGE false as no keyring backend available |
| 142 | if k_name == 'fail Keyring': |
| 143 | config['USE_OS_SECRET_STORAGE'] = False |
| 144 | config['KEYRING_NAME'] = '' |
| 145 | else: |
| 146 | config.setdefault('KEYRING_NAME', k_name) |
| 147 | |
| 148 | config.setdefault('SESSION_COOKIE_PATH', config.get('COOKIE_DEFAULT_PATH')) |
| 149 | |
| 150 | # if a script name is preset, session cookies should go to sub path |
| 151 | if 'SCRIPT_NAME' in os.environ and os.environ["SCRIPT_NAME"]: |
| 152 | config.update(dict({ |
| 153 | 'APPLICATION_ROOT': os.environ["SCRIPT_NAME"], |
| 154 | 'SESSION_COOKIE_PATH': os.environ["SCRIPT_NAME"], |
| 155 | })) |
| 156 | |
| 157 | return config |
no test coverage detected