diff --git a/archivebox/config/common.py b/archivebox/config/common.py index b7f6b1e7..0c457b7d 100644 --- a/archivebox/config/common.py +++ b/archivebox/config/common.py @@ -66,6 +66,10 @@ class StorageConfig(BaseConfigSet): # should not be a remote/network/FUSE mount for speed reasons, otherwise extractors will be slow LIB_DIR: Path = Field(default=CONSTANTS.DEFAULT_LIB_DIR) + # CUSTOM_TEMPLATES_DIR allows users to override default templates + # defaults to DATA_DIR / 'user_templates' but can be configured + CUSTOM_TEMPLATES_DIR: Path = Field(default=CONSTANTS.CUSTOM_TEMPLATES_DIR) + OUTPUT_PERMISSIONS: str = Field(default="644") RESTRICT_FILE_NAMES: str = Field(default="windows") ENFORCE_ATOMIC_WRITES: bool = Field(default=True) diff --git a/archivebox/config/paths.py b/archivebox/config/paths.py index 0eeb84f8..284c03da 100644 --- a/archivebox/config/paths.py +++ b/archivebox/config/paths.py @@ -261,7 +261,7 @@ def get_data_locations(): def get_code_locations(): from archivebox.config import CONSTANTS from archivebox.config.common import STORAGE_CONFIG - + return benedict({ 'PACKAGE_DIR': { 'path': (PACKAGE_DIR).resolve(), @@ -274,9 +274,9 @@ def get_code_locations(): 'is_valid': os.access(CONSTANTS.STATIC_DIR, os.R_OK) and os.access(CONSTANTS.STATIC_DIR, os.X_OK), # read + list }, 'CUSTOM_TEMPLATES_DIR': { - 'path': CONSTANTS.CUSTOM_TEMPLATES_DIR.resolve(), - 'enabled': os.path.isdir(CONSTANTS.CUSTOM_TEMPLATES_DIR), - 'is_valid': os.path.isdir(CONSTANTS.CUSTOM_TEMPLATES_DIR) and os.access(CONSTANTS.CUSTOM_TEMPLATES_DIR, os.R_OK), # read + 'path': STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR.resolve(), + 'enabled': os.path.isdir(STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR), + 'is_valid': os.path.isdir(STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR) and os.access(STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR, os.R_OK), # read }, 'USER_PLUGINS_DIR': { 'path': CONSTANTS.USER_PLUGINS_DIR.resolve(), diff --git a/archivebox/core/settings.py b/archivebox/core/settings.py index 54f80d50..bd1276f6 100644 --- a/archivebox/core/settings.py +++ b/archivebox/core/settings.py @@ -11,7 +11,7 @@ from django.utils.crypto import get_random_string import archivebox from archivebox.config import DATA_DIR, PACKAGE_DIR, ARCHIVE_DIR, CONSTANTS # noqa -from archivebox.config.common import SHELL_CONFIG, SERVER_CONFIG # noqa +from archivebox.config.common import SHELL_CONFIG, SERVER_CONFIG, STORAGE_CONFIG # noqa IS_MIGRATING = "makemigrations" in sys.argv[:3] or "migrate" in sys.argv[:3] @@ -116,9 +116,9 @@ AUTHENTICATION_BACKENDS = [ STATIC_URL = "/static/" TEMPLATES_DIR_NAME = "templates" -CUSTOM_TEMPLATES_ENABLED = os.path.isdir(CONSTANTS.CUSTOM_TEMPLATES_DIR) and os.access(CONSTANTS.CUSTOM_TEMPLATES_DIR, os.R_OK) +CUSTOM_TEMPLATES_ENABLED = os.path.isdir(STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR) and os.access(STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR, os.R_OK) STATICFILES_DIRS = [ - *([str(CONSTANTS.CUSTOM_TEMPLATES_DIR / "static")] if CUSTOM_TEMPLATES_ENABLED else []), + *([str(STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR / "static")] if CUSTOM_TEMPLATES_ENABLED else []), # *[ # str(plugin_dir / 'static') # for plugin_dir in PLUGIN_DIRS.values() @@ -129,7 +129,7 @@ STATICFILES_DIRS = [ ] TEMPLATE_DIRS = [ - *([str(CONSTANTS.CUSTOM_TEMPLATES_DIR)] if CUSTOM_TEMPLATES_ENABLED else []), + *([str(STORAGE_CONFIG.CUSTOM_TEMPLATES_DIR)] if CUSTOM_TEMPLATES_ENABLED else []), # *[ # str(plugin_dir / 'templates') # for plugin_dir in PLUGIN_DIRS.values()