40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
"""
|
|
A Django settings file for use on AWS while running
|
|
database migrations, since we don't want to normally run the
|
|
LMS with enough privileges to modify the database schema.
|
|
"""
|
|
|
|
# We intentionally define lots of variables that aren't used, and
|
|
# want to import all variables from base settings files
|
|
# pylint: disable=wildcard-import, unused-wildcard-import
|
|
|
|
# Import everything from .aws so that our settings are based on those.
|
|
from .aws import *
|
|
import os
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
|
|
|
|
def get_db_overrides(db_name):
|
|
"""
|
|
Now that we have multiple databases, we want to look up from the environment
|
|
for both databases.
|
|
"""
|
|
db_overrides = dict(
|
|
PASSWORD=os.environ.get('DB_MIGRATION_PASS', None),
|
|
ENGINE=os.environ.get('DB_MIGRATION_ENGINE', DATABASES[db_name]['ENGINE']),
|
|
USER=os.environ.get('DB_MIGRATION_USER', DATABASES[db_name]['USER']),
|
|
NAME=os.environ.get('DB_MIGRATION_NAME', DATABASES[db_name]['NAME']),
|
|
HOST=os.environ.get('DB_MIGRATION_HOST', DATABASES[db_name]['HOST']),
|
|
PORT=os.environ.get('DB_MIGRATION_PORT', DATABASES[db_name]['PORT']),
|
|
)
|
|
|
|
if db_overrides['PASSWORD'] is None:
|
|
raise ImproperlyConfigured("No database password was provided for running "
|
|
"migrations. This is fatal.")
|
|
return db_overrides
|
|
|
|
for db in DATABASES:
|
|
# You never migrate a read_replica
|
|
if db != 'read_replica':
|
|
DATABASES[db].update(get_db_overrides(db))
|