Merge pull request #425 from tourn/database-url
Add support for DATABASE_URL env var
This commit is contained in:
@ -11,6 +11,9 @@ https://docs.djangoproject.com/en/2.0/ref/settings/
|
|||||||
"""
|
"""
|
||||||
import ast
|
import ast
|
||||||
import os
|
import os
|
||||||
|
import random
|
||||||
|
import re
|
||||||
|
import string
|
||||||
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.staticfiles.storage import staticfiles_storage
|
from django.contrib.staticfiles.storage import staticfiles_storage
|
||||||
@ -180,6 +183,33 @@ WSGI_APPLICATION = 'recipes.wsgi.application'
|
|||||||
|
|
||||||
# Database
|
# Database
|
||||||
# Load settings from env files
|
# Load settings from env files
|
||||||
|
if os.getenv('DATABASE_URL'):
|
||||||
|
match = re.match(
|
||||||
|
r'(?P<schema>\w+):\/\/(?P<user>[\w\d_-]+)(:(?P<password>[^@]+))?@(?P<host>[^:/]+)(:(?P<port>\d+))?(\/(?P<database>[\w\d_-]+))?',
|
||||||
|
os.getenv('DATABASE_URL')
|
||||||
|
)
|
||||||
|
settings = match.groupdict()
|
||||||
|
schema = settings['schema']
|
||||||
|
if schema.startswith('postgres'):
|
||||||
|
engine = 'django.db.backends.postgresql'
|
||||||
|
elif schema == 'sqlite':
|
||||||
|
engine = 'django.db.backends.sqlite3'
|
||||||
|
else:
|
||||||
|
raise Exception("Unsupported database schema: '%s'" % schema)
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': engine,
|
||||||
|
'OPTIONS': ast.literal_eval(os.getenv('DB_OPTIONS')) if os.getenv('DB_OPTIONS') else {},
|
||||||
|
'HOST': settings['host'],
|
||||||
|
'PORT': settings['port'],
|
||||||
|
'USER': settings['user'],
|
||||||
|
'PASSWORD': settings['password'],
|
||||||
|
'NAME': settings['database'],
|
||||||
|
'CONN_MAX_AGE': 600,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else:
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': os.getenv('DB_ENGINE') if os.getenv('DB_ENGINE') else 'django.db.backends.sqlite3',
|
'ENGINE': os.getenv('DB_ENGINE') if os.getenv('DB_ENGINE') else 'django.db.backends.sqlite3',
|
||||||
|
Reference in New Issue
Block a user