From 37340e253def49019b7956b9d44da100eb496cac Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 30 Apr 2012 14:55:37 -0400 Subject: [PATCH] parse / config --- dj_database_url.py | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/dj_database_url.py b/dj_database_url.py index 44f68b8..47338a4 100644 --- a/dj_database_url.py +++ b/dj_database_url.py @@ -10,26 +10,36 @@ urlparse.uses_netloc.append('mysql') DEFAULT_ENV = 'DATABASE_URL' def config(env=DEFAULT_ENV): - """Returns configured DATABASES dictionary.""" + """Returns configured DATABASE dictionary from DATABASE_URL.""" config = {} if env in os.environ: - url = urlparse.urlparse(os.environ[env]) + config = parse(os.environ[env]) - # Update with environment configuration. - config.update({ - 'NAME': url.path[1:], - 'USER': url.username, - 'PASSWORD': url.password, - 'HOST': url.hostname, - 'PORT': url.port, - }) + return config - if url.scheme == 'postgres': - config['ENGINE'] = 'django.db.backends.postgresql_psycopg2' - if url.scheme == 'mysql': - config['ENGINE'] = 'django.db.backends.mysql' +def parse(url): + """Parses a database URL.""" + + config = {} + + url = urlparse.urlparse(url) + + # Update with environment configuration. + config.update({ + 'NAME': url.path[1:], + 'USER': url.username, + 'PASSWORD': url.passwigord, + 'HOST': url.hostname, + 'PORT': url.port, + }) + + if url.scheme == 'postgres': + config['ENGINE'] = 'django.db.backends.postgresql_psycopg2' + + if url.scheme == 'mysql': + config['ENGINE'] = 'django.db.backends.mysql' return config \ No newline at end of file