1
0
mirror of https://github.com/django/django.git synced 2025-07-05 10:19:20 +00:00

[soc2009/multidb] Updated several strings and internal API names to be more consistant and descriptive

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/multidb@10897 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Alex Gaynor 2009-06-03 02:26:16 +00:00
parent 15d405077e
commit f4bcbbfa8b
17 changed files with 111 additions and 53 deletions

View File

@ -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 File

@ -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 File

@ -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 File

@ -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,7 +25,7 @@ class Command(NoArgsCommand):
dbs = connections.all()
else:
dbs = [options['database']]
for connection in dbs:
verbosity = int(options.get('verbosity', 1))
interactive = options.get('interactive')
@ -73,5 +74,50 @@ class Command(NoArgsCommand):
# 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 File

@ -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 File

@ -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,11 +24,12 @@ class Command(AppCommand):
dbs = connections.all()
else:
dbs = [options['database']]
for connection in dbs:
app_name = app.__name__.split('.')[-2]
app_name = app.__name__.split('.')[-2]
self.style = no_style()
for connection in dbs:
sql_list = sql_reset(app, self.style, connection)
if options.get('interactive'):

View File

@ -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 File

@ -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 File

@ -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 File

@ -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 File

@ -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 File

@ -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 File

@ -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 File

@ -8,7 +8,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 File

@ -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,7 +35,6 @@ class Command(NoArgsCommand):
dbs = connections.all()
else:
dbs = [connections[options['database']]]
for connection in dbs:
# Import the 'management' module within each installed app, to register
# dispatcher events.
@ -55,6 +55,7 @@ class Command(NoArgsCommand):
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 @@ class Command(NoArgsCommand):
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 File

@ -288,8 +288,6 @@ class Constraint(object):
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 File

@ -36,7 +36,11 @@ class ConnectionHandler(object):
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 @@ class ConnectionHandler(object):
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 @@ class ConnectionHandler(object):
return iter(self.databases)
def all(self):
return [self[alias] for alias in self.databases]
return [self[alias] for alias in self]