From f321d25f4c999ab5100af2f9c23e6755bc7925ef Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 4 Oct 2024 01:00:09 -0700 Subject: [PATCH] fallback to reading binaries from filesystem when theres no db --- archivebox/abx/archivebox/base_binary.py | 11 ++++++++--- archivebox/cli/__init__.py | 14 +++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/archivebox/abx/archivebox/base_binary.py b/archivebox/abx/archivebox/base_binary.py index 2389b3e1..7f352fd8 100644 --- a/archivebox/abx/archivebox/base_binary.py +++ b/archivebox/abx/archivebox/base_binary.py @@ -78,9 +78,14 @@ class BaseBinary(BaseHook, Binary): self.symlink_to_lib(binary=binary, bin_dir=CONSTANTS.LIB_BIN_DIR) else: # get cached binary from db - from machine.models import InstalledBinary - installed_binary = InstalledBinary.objects.get_from_db_or_cache(self) - binary = InstalledBinary.load_from_db(installed_binary) + try: + from machine.models import InstalledBinary + installed_binary = InstalledBinary.objects.get_from_db_or_cache(self) + binary = InstalledBinary.load_from_db(installed_binary) + except Exception: + # maybe we are not in a DATA dir so there is no db, fallback to reading from fs + # (e.g. when archivebox version is run outside of a DATA dir) + binary = super().load(**kwargs) return binary @validate_call diff --git a/archivebox/cli/__init__.py b/archivebox/cli/__init__.py index b5bcdff7..b3457387 100644 --- a/archivebox/cli/__init__.py +++ b/archivebox/cli/__init__.py @@ -154,14 +154,14 @@ def run_subcommand(subcommand: str, subcommand_args = subcommand_args or [] + from archivebox.config.legacy import setup_django + + cmd_requires_db = subcommand in archive_cmds + init_pending = '--init' in subcommand_args or '--quick-init' in subcommand_args + + setup_django(in_memory_db=subcommand in fake_db, check_db=cmd_requires_db and not init_pending) + if subcommand not in meta_cmds: - from archivebox.config.legacy import setup_django - - cmd_requires_db = subcommand in archive_cmds - init_pending = '--init' in subcommand_args or '--quick-init' in subcommand_args - - setup_django(in_memory_db=subcommand in fake_db, check_db=cmd_requires_db and not init_pending) - if cmd_requires_db: check_migrations()