diff options
| author | 2021-09-17 13:42:11 +0100 | |
|---|---|---|
| committer | 2021-09-17 13:42:11 +0100 | |
| commit | 90957a8d8d82ed229865558e60a84259677b996e (patch) | |
| tree | 3139a22711e0f0f67582b215b85ed147292a3edb /manage.py | |
| parent | Merge pull request #589 from python-discord/jb3/repos-update (diff) | |
| parent | Move psql health check to docker compose file (diff) | |
Merge pull request #588 from python-discord/revert-metricity-init-changes
Revert metricity init changes
Diffstat (limited to 'manage.py')
| -rwxr-xr-x | manage.py | 89 | 
1 files changed, 0 insertions, 89 deletions
| @@ -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() | 
