Browse Source

Merge pull request #515 from cdvv7788/POC-setup-django-on-init

Nick Sweeting 5 years ago
parent
commit
1b22f8eeef
5 changed files with 8 additions and 15 deletions
  1. 2 1
      Dockerfile
  2. 4 0
      archivebox/cli/__init__.py
  3. 1 8
      archivebox/index/sql.py
  4. 0 5
      archivebox/main.py
  5. 1 1
      tests/fixtures.py

+ 2 - 1
Dockerfile

@@ -99,7 +99,8 @@ ENV IN_DOCKER=True \
     MERCURY_BINARY="$NODE_DIR/node_modules/.bin/mercury-parser"
     MERCURY_BINARY="$NODE_DIR/node_modules/.bin/mercury-parser"
 
 
 # Print version for nice docker finish summary
 # Print version for nice docker finish summary
-RUN archivebox version
+# RUN archivebox version
+RUN /app/bin/docker_entrypoint.sh archivebox version
 
 
 # Open up the interfaces to the outside world
 # Open up the interfaces to the outside world
 VOLUME "$DATA_DIR"
 VOLUME "$DATA_DIR"

+ 4 - 0
archivebox/cli/__init__.py

@@ -134,3 +134,7 @@ __all__ = (
     'run_subcommand',
     'run_subcommand',
     *SUBCOMMANDS.keys(),
     *SUBCOMMANDS.keys(),
 )
 )
+
+
+from ..config import setup_django
+setup_django()

+ 1 - 8
archivebox/index/sql.py

@@ -7,14 +7,13 @@ from django.db.models import QuerySet
 
 
 from .schema import Link
 from .schema import Link
 from ..util import enforce_types
 from ..util import enforce_types
-from ..config import setup_django, OUTPUT_DIR
+from ..config import OUTPUT_DIR
 
 
 
 
 ### Main Links Index
 ### Main Links Index
 
 
 @enforce_types
 @enforce_types
 def parse_sql_main_index(out_dir: Path=OUTPUT_DIR) -> Iterator[Link]:
 def parse_sql_main_index(out_dir: Path=OUTPUT_DIR) -> Iterator[Link]:
-    setup_django(out_dir, check_db=True)
     from core.models import Snapshot
     from core.models import Snapshot
 
 
     return (
     return (
@@ -24,7 +23,6 @@ def parse_sql_main_index(out_dir: Path=OUTPUT_DIR) -> Iterator[Link]:
 
 
 @enforce_types
 @enforce_types
 def remove_from_sql_main_index(snapshots: QuerySet, out_dir: Path=OUTPUT_DIR) -> None:
 def remove_from_sql_main_index(snapshots: QuerySet, out_dir: Path=OUTPUT_DIR) -> None:
-    setup_django(out_dir, check_db=True)
     from django.db import transaction
     from django.db import transaction
 
 
     with transaction.atomic():
     with transaction.atomic():
@@ -51,7 +49,6 @@ def write_link_to_sql_index(link: Link):
 
 
 @enforce_types
 @enforce_types
 def write_sql_main_index(links: List[Link], out_dir: Path=OUTPUT_DIR) -> None:
 def write_sql_main_index(links: List[Link], out_dir: Path=OUTPUT_DIR) -> None:
-    setup_django(out_dir, check_db=True)
     from django.db import transaction
     from django.db import transaction
 
 
     with transaction.atomic():
     with transaction.atomic():
@@ -61,7 +58,6 @@ def write_sql_main_index(links: List[Link], out_dir: Path=OUTPUT_DIR) -> None:
 
 
 @enforce_types
 @enforce_types
 def write_sql_link_details(link: Link, out_dir: Path=OUTPUT_DIR) -> None:
 def write_sql_link_details(link: Link, out_dir: Path=OUTPUT_DIR) -> None:
-    setup_django(out_dir, check_db=True)
     from core.models import Snapshot
     from core.models import Snapshot
     from django.db import transaction
     from django.db import transaction
 
 
@@ -84,7 +80,6 @@ def write_sql_link_details(link: Link, out_dir: Path=OUTPUT_DIR) -> None:
 
 
 @enforce_types
 @enforce_types
 def list_migrations(out_dir: Path=OUTPUT_DIR) -> List[Tuple[bool, str]]:
 def list_migrations(out_dir: Path=OUTPUT_DIR) -> List[Tuple[bool, str]]:
-    setup_django(out_dir, check_db=False)
     from django.core.management import call_command
     from django.core.management import call_command
     out = StringIO()
     out = StringIO()
     call_command("showmigrations", list=True, stdout=out)
     call_command("showmigrations", list=True, stdout=out)
@@ -101,7 +96,6 @@ def list_migrations(out_dir: Path=OUTPUT_DIR) -> List[Tuple[bool, str]]:
 
 
 @enforce_types
 @enforce_types
 def apply_migrations(out_dir: Path=OUTPUT_DIR) -> List[str]:
 def apply_migrations(out_dir: Path=OUTPUT_DIR) -> List[str]:
-    setup_django(out_dir, check_db=False)
     from django.core.management import call_command
     from django.core.management import call_command
     null, out = StringIO(), StringIO()
     null, out = StringIO(), StringIO()
     call_command("makemigrations", interactive=False, stdout=null)
     call_command("makemigrations", interactive=False, stdout=null)
@@ -112,6 +106,5 @@ def apply_migrations(out_dir: Path=OUTPUT_DIR) -> List[str]:
 
 
 @enforce_types
 @enforce_types
 def get_admins(out_dir: Path=OUTPUT_DIR) -> List[str]:
 def get_admins(out_dir: Path=OUTPUT_DIR) -> List[str]:
-    setup_django(out_dir, check_db=False)
     from django.contrib.auth.models import User
     from django.contrib.auth.models import User
     return User.objects.filter(is_superuser=True)
     return User.objects.filter(is_superuser=True)

+ 0 - 5
archivebox/main.py

@@ -83,7 +83,6 @@ from .config import (
     check_dependencies,
     check_dependencies,
     check_data_folder,
     check_data_folder,
     write_config_file,
     write_config_file,
-    setup_django,
     VERSION,
     VERSION,
     CODE_LOCATIONS,
     CODE_LOCATIONS,
     EXTERNAL_LOCATIONS,
     EXTERNAL_LOCATIONS,
@@ -312,7 +311,6 @@ def init(force: bool=False, out_dir: Path=OUTPUT_DIR) -> None:
     else:
     else:
         print('\n{green}[+] Building main SQL index and running migrations...{reset}'.format(**ANSI))
         print('\n{green}[+] Building main SQL index and running migrations...{reset}'.format(**ANSI))
     
     
-    setup_django(out_dir, check_db=False)
     DATABASE_FILE = Path(out_dir) / SQL_INDEX_FILENAME
     DATABASE_FILE = Path(out_dir) / SQL_INDEX_FILENAME
     print(f'    √ {DATABASE_FILE}')
     print(f'    √ {DATABASE_FILE}')
     print()
     print()
@@ -1048,7 +1046,6 @@ def server(runserver_args: Optional[List[str]]=None,
     config.DEBUG = config.DEBUG or debug
     config.DEBUG = config.DEBUG or debug
 
 
     check_data_folder(out_dir=out_dir)
     check_data_folder(out_dir=out_dir)
-    setup_django(out_dir)
 
 
     from django.core.management import call_command
     from django.core.management import call_command
     from django.contrib.auth.models import User
     from django.contrib.auth.models import User
@@ -1085,7 +1082,6 @@ def manage(args: Optional[List[str]]=None, out_dir: Path=OUTPUT_DIR) -> None:
     """Run an ArchiveBox Django management command"""
     """Run an ArchiveBox Django management command"""
 
 
     check_data_folder(out_dir=out_dir)
     check_data_folder(out_dir=out_dir)
-    setup_django(out_dir)
     from django.core.management import execute_from_command_line
     from django.core.management import execute_from_command_line
 
 
     if (args and "createsuperuser" in args) and (IN_DOCKER and not IS_TTY):
     if (args and "createsuperuser" in args) and (IN_DOCKER and not IS_TTY):
@@ -1102,7 +1098,6 @@ def shell(out_dir: Path=OUTPUT_DIR) -> None:
 
 
     check_data_folder(out_dir=out_dir)
     check_data_folder(out_dir=out_dir)
 
 
-    setup_django(OUTPUT_DIR)
     from django.core.management import call_command
     from django.core.management import call_command
     call_command("shell_plus")
     call_command("shell_plus")
 
 

+ 1 - 1
tests/fixtures.py

@@ -25,4 +25,4 @@ def disable_extractors_dict():
         "SAVE_MEDIA": "false",
         "SAVE_MEDIA": "false",
         "SAVE_ARCHIVE_DOT_ORG": "false"
         "SAVE_ARCHIVE_DOT_ORG": "false"
     })
     })
-    return env
+    return env