aboutsummaryrefslogtreecommitdiffstats
path: root/manage.py
diff options
context:
space:
mode:
Diffstat (limited to 'manage.py')
-rwxr-xr-xmanage.py89
1 files changed, 0 insertions, 89 deletions
diff --git a/manage.py b/manage.py
index 648d6635..578f4748 100755
--- a/manage.py
+++ b/manage.py
@@ -1,9 +1,6 @@
#!/usr/bin/env python
import os
-import socket
import sys
-import time
-from urllib.parse import SplitResult, urlsplit
import django
from django.contrib.auth import get_user_model
@@ -55,21 +52,6 @@ class SiteManager:
print("Starting in debug mode.")
@staticmethod
- def parse_db_url(db_url: str) -> SplitResult:
- """Validate and split the given databse url."""
- db_url_parts = urlsplit(db_url)
- if not all((
- db_url_parts.hostname,
- db_url_parts.username,
- db_url_parts.password,
- db_url_parts.path
- )):
- raise ValueError(
- "The DATABASE_URL environment variable is not a valid PostgreSQL database URL."
- )
- return db_url_parts
-
- @staticmethod
def create_superuser() -> None:
"""Create a default django admin super user in development environments."""
print("Creating a superuser.")
@@ -99,36 +81,6 @@ class SiteManager:
print(f"Existing bot token found: {token}")
@staticmethod
- def wait_for_postgres() -> None:
- """Wait for the PostgreSQL database specified in DATABASE_URL."""
- print("Waiting for PostgreSQL database.")
-
- # Get database URL based on environmental variable passed in compose
- database_url_parts = SiteManager.parse_db_url(os.environ["DATABASE_URL"])
- domain = database_url_parts.hostname
- # Port may be omitted, 5432 is the default psql port
- port = database_url_parts.port or 5432
-
- # Attempt to connect to the database socket
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
- attempts_left = 10
- while attempts_left:
- try:
- # Ignore 'incomplete startup packet'
- s.connect((domain, port))
- s.shutdown(socket.SHUT_RDWR)
- print("Database is ready.")
- break
- except socket.error:
- attempts_left -= 1
- print("Not ready yet, retrying.")
- time.sleep(0.5)
- else:
- print("Database could not be found, exiting.")
- sys.exit(1)
-
- @staticmethod
def set_dev_site_name() -> None:
"""Set the development site domain in admin from default example."""
# import Site model now after django setup
@@ -141,44 +93,8 @@ class SiteManager:
name="pythondiscord.local:8000"
)
- @staticmethod
- def run_metricity_init() -> None:
- """
- Initialise metricity relations and populate with some testing data.
-
- This is done at run time since other projects, like Python bot,
- rely on the site initialising it's own db, since they do not have
- access to the init.sql file to mount a docker-compose volume.
- """
- import psycopg2
- from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
-
- print("Initialising metricity.")
-
- db_url_parts = SiteManager.parse_db_url(os.environ["DATABASE_URL"])
- conn = psycopg2.connect(
- host=db_url_parts.hostname,
- port=db_url_parts.port,
- user=db_url_parts.username,
- password=db_url_parts.password,
- database=db_url_parts.path[1:]
- )
- # Required to create a db from `cursor.execute()`
- conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
-
- with conn.cursor() as cursor, open("postgres/init.sql", encoding="utf-8") as f:
- cursor.execute(
- f.read(),
- ("metricity", db_url_parts.username, db_url_parts.password)
- )
- conn.close()
-
def prepare_server(self) -> None:
"""Perform preparation tasks before running the server."""
- self.wait_for_postgres()
- if self.debug:
- self.run_metricity_init()
-
django.setup()
print("Applying migrations.")
@@ -233,11 +149,6 @@ class SiteManager:
def main() -> None:
"""Entry point for Django management script."""
- # Always run metricity init when in CI, indicated by the CI env var
- if os.environ.get("CI", "false").lower() == "true":
- SiteManager.wait_for_postgres()
- SiteManager.run_metricity_init()
-
# Use the custom site manager for launching the server
if len(sys.argv) > 1 and sys.argv[1] == "run":
SiteManager(sys.argv).run_server()