From aa282daadfd85956dc90fb3cc98cd9e3b12fcaa0 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Tue, 20 Aug 2024 19:27:21 -0700 Subject: [PATCH] show CONSTANTS in separate section of django admin config --- archivebox/core/views.py | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/archivebox/core/views.py b/archivebox/core/views.py index 128de658..02f67ffa 100644 --- a/archivebox/core/views.py +++ b/archivebox/core/views.py @@ -39,6 +39,7 @@ from ..config import ( USER_CONFIG, SAVE_ARCHIVE_DOT_ORG, PREVIEW_ORIGINALS, + CONSTANTS, ) from ..logging_util import printable_filesize from ..main import add @@ -502,6 +503,8 @@ class HealthCheckView(View): def find_config_section(key: str) -> str: + if key in CONSTANTS: + return 'CONSTANT' matching_sections = [ name for name, opts in CONFIG_SCHEMA.items() if key in opts ] @@ -550,20 +553,33 @@ def live_config_list_view(request: HttpRequest, **kwargs) -> TableContext: rows['Key'].append(ItemLink(key, key=key)) rows['Type'].append(mark_safe(f'{find_config_type(key)}')) rows['Value'].append(mark_safe(f'{CONFIG[key]}') if key_is_safe(key) else '******** (redacted)') - rows['Default'].append(mark_safe(f'{find_config_default(key) or "See here..."}')) + rows['Default'].append(mark_safe(f'{find_config_default(key) or "See here..."}')) # rows['Documentation'].append(mark_safe(f'Wiki: {key}')) rows['Aliases'].append(', '.join(CONFIG_SCHEMA[section][key].get('aliases', []))) section = 'DYNAMIC' for key in DYNAMIC_CONFIG_SCHEMA.keys(): + if key in CONSTANTS: + continue rows['Section'].append(section) # section.replace('_', ' ').title().replace(' Config', '') rows['Key'].append(ItemLink(key, key=key)) rows['Type'].append(mark_safe(f'{find_config_type(key)}')) rows['Value'].append(mark_safe(f'{CONFIG[key]}') if key_is_safe(key) else '******** (redacted)') - rows['Default'].append(mark_safe(f'{find_config_default(key) or "See here..."}')) + rows['Default'].append(mark_safe(f'{find_config_default(key) or "See here..."}')) # rows['Documentation'].append(mark_safe(f'Wiki: {key}')) rows['Aliases'].append(ItemLink(key, key=key) if key in USER_CONFIG else '') + section = 'CONSTANT' + for key in CONSTANTS.keys(): + rows['Section'].append(section) # section.replace('_', ' ').title().replace(' Config', '') + rows['Key'].append(ItemLink(key, key=key)) + rows['Type'].append(mark_safe(f'{find_config_type(key)}')) + rows['Value'].append(mark_safe(f'{CONFIG[key]}') if key_is_safe(key) else '******** (redacted)') + rows['Default'].append(mark_safe(f'{find_config_default(key) or "See here..."}')) + # rows['Documentation'].append(mark_safe(f'Wiki: {key}')) + rows['Aliases'].append(ItemLink(key, key=key) if key in USER_CONFIG else '') + + return TableContext( title="Computed Configuration Values", table=rows, @@ -576,12 +592,20 @@ def live_config_value_view(request: HttpRequest, key: str, **kwargs) -> ItemCont aliases = USER_CONFIG.get(key, {}).get("aliases", []) + if key in CONSTANTS: + section_header = mark_safe(f'[CONSTANTS]   {key}   (read-only, hardcoded by ArchiveBox)') + elif key in USER_CONFIG: + section_header = mark_safe(f'data / ArchiveBox.conf   [{find_config_section(key)}]   {key}') + else: + section_header = mark_safe(f'[DYNAMIC CONFIG]   {key}   (read-only, calculated at runtime)') + + return ItemContext( slug=key, title=key, data=[ { - "name": mark_safe(f'data / ArchiveBox.conf   [{find_config_section(key)}]   {key}' if key in USER_CONFIG else f'[DYNAMIC CONFIG]   {key}   (calculated at runtime)'), + "name": section_header, "description": None, "fields": { 'Key': key, @@ -596,14 +620,16 @@ def live_config_value_view(request: HttpRequest, key: str, **kwargs) -> ItemCont '''), 'Type': mark_safe(f''' - + See full definition in archivebox/config.py... '''), 'Value': mark_safe(f''' {'Value is redacted for your security. (Passwords, secrets, API tokens, etc. cannot be viewed in the Web UI)

' if not key_is_safe(key) else ''} - Default: - {find_config_default(key) or 'See 1here...'} +


+ Default:                               +
+ {find_config_default(key) or '↗️ See in ArchiveBox source code...'}