Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[soc2009/multidb] Updated several strings and internal API names to b…

…e more consistant and descriptive

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/multidb@10897 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit f4bcbbfa8bca397850a0060225906243e7ed27f4 1 parent 15d4050
@alex alex authored
View
2  TODO.TXT
@@ -13,6 +13,8 @@ that need to be done. I'm trying to be as granular as possible.
The remaining items will be fixed as the code for them enters the code base.
+ Replace old instances of :setting:`DATABASE_` with a new tag or something.
+
3) Update all management commands in the following way:
View
3  django/core/management/commands/createcachetable.py
@@ -10,7 +10,8 @@ class Command(LabelCommand):
option_list = LabelCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to install the cache table to.'),
+ default='default', help='Nominates a specific database to install '
+ 'the cache table to. Defaults to the "default" database.'),
)
requires_model_validation = False
View
3  django/core/management/commands/dbshell.py
@@ -9,7 +9,8 @@ class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to connection to.'),
+ default='default', help='Nominates a database to open a shell for.'
+ ' Defaults to the "default" database.'),
)
requires_model_validation = False
View
56 django/core/management/commands/flush.py
@@ -15,7 +15,8 @@ class Command(NoArgsCommand):
make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'),
make_option('--database', action='store', dest='database',
- default='', help='Selects what database to flush.'),
+ default='', help='Nominates a database to flush. Defaults to '
+ 'flushing all databases.'),
)
help = "Executes ``sqlflush`` on the current database."
@@ -24,11 +25,11 @@ def handle_noargs(self, **options):
dbs = connections.all()
else:
dbs = [options['database']]
- for connection in dbs:
- verbosity = int(options.get('verbosity', 1))
- interactive = options.get('interactive')
- self.style = no_style()
+ verbosity = int(options.get('verbosity', 1))
+ interactive = options.get('interactive')
+
+ self.style = no_style()
# Import the 'management' module within each installed app, to register
# dispatcher events.
@@ -73,5 +74,50 @@ def handle_noargs(self, **options):
# Reinstall the initial_data fixture.
call_command('loaddata', 'initial_data', **options)
+ for app_name in settings.INSTALLED_APPS:
+ try:
+ import_module('.management', app_name)
+ except ImportError:
+ pass
+
+ for connection in dbs:
+
+ # Import the 'management' module within each installed app, to register
+ # dispatcher events.
+ sql_list = sql_flush(self.style, connection, only_django=True)
+
+ if interactive:
+ confirm = raw_input("""You have requested a flush of the database.
+ This will IRREVERSIBLY DESTROY all data currently in the %r database,
+ and return each table to the state it was in after syncdb.
+ Are you sure you want to do this?
+
+ Type 'yes' to continue, or 'no' to cancel: """ % connection.settings_dict['DATABASE_NAME'])
+ else:
+ confirm = 'yes'
+
+ if confirm == 'yes':
+ try:
+ cursor = connection.cursor()
+ for sql in sql_list:
+ cursor.execute(sql)
+ except Exception, e:
+ transaction.rollback_unless_managed()
+ raise CommandError("""Database %s couldn't be flushed. Possible reasons:
+ * The database isn't running or isn't configured correctly.
+ * At least one of the expected database tables doesn't exist.
+ * The SQL was invalid.
+ Hint: Look at the output of 'django-admin.py sqlflush'. That's the SQL this command wasn't able to run.
+ The full error: %s""" % (connection.settings_dict.DATABASE_NAME, e))
+ transaction.commit_unless_managed()
+
+ # Emit the post sync signal. This allows individual
+ # applications to respond as if the database had been
+ # sync'd from scratch.
+ emit_post_sync_signal(models.get_models(), verbosity, interactive, connection)
+
+ # Reinstall the initial_data fixture.
+ call_command('loaddata', 'initial_data', **options)
+
else:
print "Flush cancelled."
View
3  django/core/management/commands/inspectdb.py
@@ -9,7 +9,8 @@ class Command(NoArgsCommand):
option_list = NoArgsCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to introspect.'),
+ default='default', help='Nominates a database to introspect. '
+ 'Defaults to using the "default" database.'),
)
requires_model_validation = False
View
10 django/core/management/commands/reset.py
@@ -11,7 +11,8 @@ class Command(AppCommand):
make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'),
make_option('--database', action='store', dest='database',
- default='', help='Selects what database reset.'),
+ default='', help='Nominates a database to reset. Defaults to '
+ 'reseting all databases.'),
)
help = "Executes ``sqlreset`` for the given app(s) in the current database."
args = '[appname ...]'
@@ -23,10 +24,11 @@ def handle_app(self, app, **options):
dbs = connections.all()
else:
dbs = [options['database']]
- for connection in dbs:
- app_name = app.__name__.split('.')[-2]
- self.style = no_style()
+ app_name = app.__name__.split('.')[-2]
+ self.style = no_style()
+
+ for connection in dbs:
sql_list = sql_reset(app, self.style, connection)
View
3  django/core/management/commands/sql.py
@@ -9,7 +9,8 @@ class Command(AppCommand):
option_list = AppCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
)
output_transaction = True
View
3  django/core/management/commands/sqlall.py
@@ -9,7 +9,8 @@ class Command(AppCommand):
option_list = AppCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
)
output_transaction = True
View
3  django/core/management/commands/sqlclear.py
@@ -9,7 +9,8 @@ class Command(AppCommand):
option_list = AppCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
)
output_transaction = True
View
3  django/core/management/commands/sqlcustom.py
@@ -9,7 +9,8 @@ class Command(AppCommand):
option_list = AppCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
)
output_transaction = True
View
3  django/core/management/commands/sqlflush.py
@@ -9,7 +9,8 @@ class Command(NoArgsCommand):
option_list = NoArgsCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
)
output_transaction = True
View
3  django/core/management/commands/sqlindexes.py
@@ -9,7 +9,8 @@ class Command(AppCommand):
option_list = AppCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
)
output_transaction = True
View
3  django/core/management/commands/sqlreset.py
@@ -9,7 +9,8 @@ class Command(AppCommand):
option_list = AppCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
)
output_transaction = True
View
5 django/core/management/commands/sqlsequencereset.py
@@ -8,8 +8,9 @@ class Command(AppCommand):
option_list = AppCommand.option_list + (
make_option('--database', action='store', dest='database',
- default='default', help='Selects what database to print the SQL for.'),
- )
+ default='default', help='Nominates a database to print the SQL '
+ 'for. Defaults to the "default" database.'),
+ )
output_transaction = True
View
47 django/core/management/commands/syncdb.py
@@ -18,7 +18,8 @@ class Command(NoArgsCommand):
make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'),
make_option('--database', action='store', dest='database',
- default='', help='Selects what database to flush.'),
+ default='', help='Nominates a database to sync. Defaults to the '
+ '"default" database.'),
)
help = "Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
@@ -34,27 +35,27 @@ def handle_noargs(self, **options):
dbs = connections.all()
else:
dbs = [connections[options['database']]]
- for connection in dbs:
- # Import the 'management' module within each installed app, to register
- # dispatcher events.
- for app_name in settings.INSTALLED_APPS:
- try:
- import_module('.management', app_name)
- except ImportError, exc:
- # This is slightly hackish. We want to ignore ImportErrors
- # if the "management" module itself is missing -- but we don't
- # want to ignore the exception if the management module exists
- # but raises an ImportError for some reason. The only way we
- # can do this is to check the text of the exception. Note that
- # we're a bit broad in how we check the text, because different
- # Python implementations may not use the same text.
- # CPython uses the text "No module named management"
- # PyPy uses "No module named myproject.myapp.management"
- msg = exc.args[0]
- if not msg.startswith('No module named') or 'management' not in msg:
- raise
+ # Import the 'management' module within each installed app, to register
+ # dispatcher events.
+ for app_name in settings.INSTALLED_APPS:
+ try:
+ import_module('.management', app_name)
+ except ImportError, exc:
+ # This is slightly hackish. We want to ignore ImportErrors
+ # if the "management" module itself is missing -- but we don't
+ # want to ignore the exception if the management module exists
+ # but raises an ImportError for some reason. The only way we
+ # can do this is to check the text of the exception. Note that
+ # we're a bit broad in how we check the text, because different
+ # Python implementations may not use the same text.
+ # CPython uses the text "No module named management"
+ # PyPy uses "No module named myproject.myapp.management"
+ msg = exc.args[0]
+ if not msg.startswith('No module named') or 'management' not in msg:
+ raise
+ for connection in dbs:
cursor = connection.cursor()
# Get a list of already installed *models* so that references work right.
@@ -154,15 +155,9 @@ def handle_noargs(self, **options):
else:
transaction.commit_unless_managed()
-<<<<<<< HEAD:django/core/management/commands/syncdb.py
- # Install the 'initial_data' fixture, using format discovery
- from django.core.management import call_command
- call_command('loaddata', 'initial_data', verbosity=verbosity)
-=======
# Install the 'initial_data' fixture, using format discovery
# FIXME we only load the fixture data for one DB right now, since we
# can't control what DB it does into, once we can control this we
# should move it back into the DB loop
from django.core.management import call_command
call_command('loaddata', 'initial_data', verbosity=verbosity)
->>>>>>> 2c764d3ff7cb665ec919d1f3e2977587752c6f2c:django/core/management/commands/syncdb.py
View
2  django/db/models/sql/where.py
@@ -288,8 +288,6 @@ def process(self, lookup_type, value, connection):
try:
if self.field:
params = self.field.get_db_prep_lookup(lookup_type, value)
- # FIXME, we're using the global connection object here, once a
- # WhereNode know's it's connection we should pass that through
db_type = self.field.db_type(connection)
else:
# This branch is used at times when we add a comparison to NULL
View
10 django/db/utils.py
@@ -36,7 +36,11 @@ def __init__(self, databases):
self.databases = databases
self._connections = {}
- def check_connection(self, alias):
+ def ensure_defaults(self, alias):
+ """
+ Puts the defaults into the settings dictionary for a given connection
+ where no settings is provided.
+ """
conn = self.databases[alias]
conn.setdefault('DATABASE_ENGINE', 'dummy')
conn.setdefault('DATABASE_OPTIONS', {})
@@ -52,7 +56,7 @@ def __getitem__(self, alias):
if alias in self._connections:
return self._connections[alias]
- self.check_connection(alias)
+ self.ensure_defaults(alias)
db = self.databases[alias]
backend = load_backend(db['DATABASE_ENGINE'])
conn = backend.DatabaseWrapper(db)
@@ -63,4 +67,4 @@ def __iter__(self):
return iter(self.databases)
def all(self):
- return [self[alias] for alias in self.databases]
+ return [self[alias] for alias in self]
Please sign in to comment.
Something went wrong with that request. Please try again.