From bfe36750b157d744c83a6aaea1bf2cb95afdf65d Mon Sep 17 00:00:00 2001 From: Justin Bronn Date: Sun, 19 Apr 2009 23:31:14 +0000 Subject: [PATCH] Fixed #10364 -- Correctly identify test spatial database creation errors to the user. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10603 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../gis/db/backend/postgis/creation.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/django/contrib/gis/db/backend/postgis/creation.py b/django/contrib/gis/db/backend/postgis/creation.py index bb7438091d3..39306902d66 100644 --- a/django/contrib/gis/db/backend/postgis/creation.py +++ b/django/contrib/gis/db/backend/postgis/creation.py @@ -46,16 +46,19 @@ def _create_with_cursor(db_name, verbosity=1, autoclobber=False): # Trying to create the database first. cursor.execute(create_sql) except Exception, e: - # Drop and recreate, if necessary. - if not autoclobber: - confirm = raw_input("\nIt appears the database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % db_name) - if autoclobber or confirm == 'yes': - if verbosity >= 1: print 'Destroying old spatial database...' - drop_db(db_name) - if verbosity >= 1: print 'Creating new spatial database...' - cursor.execute(create_sql) + if 'already exists' in e.pgerror.lower(): + # Database already exists, drop and recreate if user agrees. + if not autoclobber: + confirm = raw_input("\nIt appears the database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % db_name) + if autoclobber or confirm == 'yes': + if verbosity >= 1: print 'Destroying old spatial database...' + drop_db(db_name) + if verbosity >= 1: print 'Creating new spatial database...' + cursor.execute(create_sql) + else: + raise Exception('Spatial database creation canceled.') else: - raise Exception('Spatial Database Creation canceled.') + raise Exception('Spatial database creation failed: "%s"' % e.pgerror.strip()) created_regex = re.compile(r'^createdb: database creation failed: ERROR: database ".+" already exists') def _create_with_shell(db_name, verbosity=1, autoclobber=False):