Fixed a group of missing imports, aliases and parameter passings from the
db.backend.creation refactoring. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8328 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
e42748dbf5
commit
bb5a35cc54
|
@ -17,14 +17,14 @@ class BaseDatabaseCreation(object):
|
||||||
"""
|
"""
|
||||||
This class encapsulates all backend-specific differences that pertain to
|
This class encapsulates all backend-specific differences that pertain to
|
||||||
database *creation*, such as the column types to use for particular Django
|
database *creation*, such as the column types to use for particular Django
|
||||||
Fields, the SQL used to create and destroy tables, and the creation and
|
Fields, the SQL used to create and destroy tables, and the creation and
|
||||||
destruction of test databases.
|
destruction of test databases.
|
||||||
"""
|
"""
|
||||||
data_types = {}
|
data_types = {}
|
||||||
|
|
||||||
def __init__(self, connection):
|
def __init__(self, connection):
|
||||||
self.connection = connection
|
self.connection = connection
|
||||||
|
|
||||||
def sql_create_model(self, model, style, known_models=set()):
|
def sql_create_model(self, model, style, known_models=set()):
|
||||||
"""
|
"""
|
||||||
Returns the SQL required to create a single model, as a tuple of:
|
Returns the SQL required to create a single model, as a tuple of:
|
||||||
|
@ -89,7 +89,7 @@ class BaseDatabaseCreation(object):
|
||||||
final_output.append(stmt)
|
final_output.append(stmt)
|
||||||
|
|
||||||
return final_output, pending_references
|
return final_output, pending_references
|
||||||
|
|
||||||
def sql_for_inline_foreign_key_references(self, field, known_models, style):
|
def sql_for_inline_foreign_key_references(self, field, known_models, style):
|
||||||
"Return the SQL snippet defining the foreign key reference for a field"
|
"Return the SQL snippet defining the foreign key reference for a field"
|
||||||
qn = self.connection.ops.quote_name
|
qn = self.connection.ops.quote_name
|
||||||
|
@ -105,9 +105,9 @@ class BaseDatabaseCreation(object):
|
||||||
# is related, so save it for later.
|
# is related, so save it for later.
|
||||||
output = []
|
output = []
|
||||||
pending = True
|
pending = True
|
||||||
|
|
||||||
return output, pending
|
return output, pending
|
||||||
|
|
||||||
def sql_for_pending_references(self, model, style, pending_references):
|
def sql_for_pending_references(self, model, style, pending_references):
|
||||||
"Returns any ALTER TABLE statements to add constraints after the fact."
|
"Returns any ALTER TABLE statements to add constraints after the fact."
|
||||||
from django.db.backends.util import truncate_name
|
from django.db.backends.util import truncate_name
|
||||||
|
@ -131,7 +131,7 @@ class BaseDatabaseCreation(object):
|
||||||
self.connection.ops.deferrable_sql()))
|
self.connection.ops.deferrable_sql()))
|
||||||
del pending_references[model]
|
del pending_references[model]
|
||||||
return final_output
|
return final_output
|
||||||
|
|
||||||
def sql_for_many_to_many(self, model, style):
|
def sql_for_many_to_many(self, model, style):
|
||||||
"Return the CREATE TABLE statments for all the many-to-many tables defined on a model"
|
"Return the CREATE TABLE statments for all the many-to-many tables defined on a model"
|
||||||
output = []
|
output = []
|
||||||
|
@ -149,7 +149,7 @@ class BaseDatabaseCreation(object):
|
||||||
opts = model._meta
|
opts = model._meta
|
||||||
qn = self.connection.ops.quote_name
|
qn = self.connection.ops.quote_name
|
||||||
tablespace = f.db_tablespace or opts.db_tablespace
|
tablespace = f.db_tablespace or opts.db_tablespace
|
||||||
if tablespace:
|
if tablespace:
|
||||||
sql = self.connection.ops.tablespace_sql(tablespace, inline=True)
|
sql = self.connection.ops.tablespace_sql(tablespace, inline=True)
|
||||||
if sql:
|
if sql:
|
||||||
tablespace_sql = ' ' + sql
|
tablespace_sql = ' ' + sql
|
||||||
|
@ -184,7 +184,7 @@ class BaseDatabaseCreation(object):
|
||||||
for r_table, r_col, table, col in deferred:
|
for r_table, r_col, table, col in deferred:
|
||||||
r_name = '%s_refs_%s_%x' % (r_col, col,
|
r_name = '%s_refs_%s_%x' % (r_col, col,
|
||||||
abs(hash((r_table, table))))
|
abs(hash((r_table, table))))
|
||||||
output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' %
|
output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' %
|
||||||
(qn(r_table),
|
(qn(r_table),
|
||||||
truncate_name(r_name, self.connection.ops.max_name_length()),
|
truncate_name(r_name, self.connection.ops.max_name_length()),
|
||||||
qn(r_col), qn(table), qn(col),
|
qn(r_col), qn(table), qn(col),
|
||||||
|
@ -195,7 +195,7 @@ class BaseDatabaseCreation(object):
|
||||||
if autoinc_sql:
|
if autoinc_sql:
|
||||||
for stmt in autoinc_sql:
|
for stmt in autoinc_sql:
|
||||||
output.append(stmt)
|
output.append(stmt)
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def sql_for_inline_many_to_many_references(self, model, field, style):
|
def sql_for_inline_many_to_many_references(self, model, field, style):
|
||||||
"Create the references to other tables required by a many-to-many table"
|
"Create the references to other tables required by a many-to-many table"
|
||||||
|
@ -222,14 +222,14 @@ class BaseDatabaseCreation(object):
|
||||||
deferred = []
|
deferred = []
|
||||||
|
|
||||||
return table_output, deferred
|
return table_output, deferred
|
||||||
|
|
||||||
def sql_indexes_for_model(self, model, style):
|
def sql_indexes_for_model(self, model, style):
|
||||||
"Returns the CREATE INDEX SQL statements for a single model"
|
"Returns the CREATE INDEX SQL statements for a single model"
|
||||||
output = []
|
output = []
|
||||||
for f in model._meta.local_fields:
|
for f in model._meta.local_fields:
|
||||||
output.extend(self.sql_indexes_for_field(model, f, style))
|
output.extend(self.sql_indexes_for_field(model, f, style))
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def sql_indexes_for_field(self, model, f, style):
|
def sql_indexes_for_field(self, model, f, style):
|
||||||
"Return the CREATE INDEX SQL statements for a single model field"
|
"Return the CREATE INDEX SQL statements for a single model field"
|
||||||
if f.db_index and not f.unique:
|
if f.db_index and not f.unique:
|
||||||
|
@ -260,16 +260,19 @@ class BaseDatabaseCreation(object):
|
||||||
output = ['%s %s;' % (style.SQL_KEYWORD('DROP TABLE'),
|
output = ['%s %s;' % (style.SQL_KEYWORD('DROP TABLE'),
|
||||||
style.SQL_TABLE(qn(model._meta.db_table)))]
|
style.SQL_TABLE(qn(model._meta.db_table)))]
|
||||||
if model in references_to_delete:
|
if model in references_to_delete:
|
||||||
output.extend(self.sql_remove_table_constraints(model, references_to_delete))
|
output.extend(self.sql_remove_table_constraints(model, references_to_delete, style))
|
||||||
|
|
||||||
if model._meta.has_auto_field:
|
if model._meta.has_auto_field:
|
||||||
ds = self.connection.ops.drop_sequence_sql(model._meta.db_table)
|
ds = self.connection.ops.drop_sequence_sql(model._meta.db_table)
|
||||||
if ds:
|
if ds:
|
||||||
output.append(ds)
|
output.append(ds)
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def sql_remove_table_constraints(self, model, references_to_delete):
|
def sql_remove_table_constraints(self, model, references_to_delete, style):
|
||||||
|
from django.db.backends.util import truncate_name
|
||||||
|
|
||||||
output = []
|
output = []
|
||||||
|
qn = self.connection.ops.quote_name
|
||||||
for rel_class, f in references_to_delete[model]:
|
for rel_class, f in references_to_delete[model]:
|
||||||
table = rel_class._meta.db_table
|
table = rel_class._meta.db_table
|
||||||
col = f.column
|
col = f.column
|
||||||
|
@ -283,7 +286,7 @@ class BaseDatabaseCreation(object):
|
||||||
style.SQL_FIELD(truncate_name(r_name, self.connection.ops.max_name_length()))))
|
style.SQL_FIELD(truncate_name(r_name, self.connection.ops.max_name_length()))))
|
||||||
del references_to_delete[model]
|
del references_to_delete[model]
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def sql_destroy_many_to_many(self, model, f, style):
|
def sql_destroy_many_to_many(self, model, f, style):
|
||||||
"Returns the DROP TABLE statements for a single m2m field"
|
"Returns the DROP TABLE statements for a single m2m field"
|
||||||
qn = self.connection.ops.quote_name
|
qn = self.connection.ops.quote_name
|
||||||
|
@ -295,7 +298,7 @@ class BaseDatabaseCreation(object):
|
||||||
if ds:
|
if ds:
|
||||||
output.append(ds)
|
output.append(ds)
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def create_test_db(self, verbosity=1, autoclobber=False):
|
def create_test_db(self, verbosity=1, autoclobber=False):
|
||||||
"""
|
"""
|
||||||
Creates a test database, prompting the user for confirmation if the
|
Creates a test database, prompting the user for confirmation if the
|
||||||
|
@ -303,7 +306,7 @@ class BaseDatabaseCreation(object):
|
||||||
"""
|
"""
|
||||||
if verbosity >= 1:
|
if verbosity >= 1:
|
||||||
print "Creating test database..."
|
print "Creating test database..."
|
||||||
|
|
||||||
test_database_name = self._create_test_db(verbosity, autoclobber)
|
test_database_name = self._create_test_db(verbosity, autoclobber)
|
||||||
|
|
||||||
self.connection.close()
|
self.connection.close()
|
||||||
|
@ -324,7 +327,7 @@ class BaseDatabaseCreation(object):
|
||||||
def _create_test_db(self, verbosity, autoclobber):
|
def _create_test_db(self, verbosity, autoclobber):
|
||||||
"Internal implementation - creates the test db tables."
|
"Internal implementation - creates the test db tables."
|
||||||
suffix = self.sql_table_creation_suffix()
|
suffix = self.sql_table_creation_suffix()
|
||||||
|
|
||||||
if settings.TEST_DATABASE_NAME:
|
if settings.TEST_DATABASE_NAME:
|
||||||
test_database_name = settings.TEST_DATABASE_NAME
|
test_database_name = settings.TEST_DATABASE_NAME
|
||||||
else:
|
else:
|
||||||
|
@ -357,9 +360,9 @@ class BaseDatabaseCreation(object):
|
||||||
else:
|
else:
|
||||||
print "Tests cancelled."
|
print "Tests cancelled."
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
return test_database_name
|
return test_database_name
|
||||||
|
|
||||||
def destroy_test_db(self, old_database_name, verbosity=1):
|
def destroy_test_db(self, old_database_name, verbosity=1):
|
||||||
"""
|
"""
|
||||||
Destroy a test database, prompting the user for confirmation if the
|
Destroy a test database, prompting the user for confirmation if the
|
||||||
|
@ -370,9 +373,9 @@ class BaseDatabaseCreation(object):
|
||||||
self.connection.close()
|
self.connection.close()
|
||||||
test_database_name = settings.DATABASE_NAME
|
test_database_name = settings.DATABASE_NAME
|
||||||
settings.DATABASE_NAME = old_database_name
|
settings.DATABASE_NAME = old_database_name
|
||||||
|
|
||||||
self._destroy_test_db(test_database_name, verbosity)
|
self._destroy_test_db(test_database_name, verbosity)
|
||||||
|
|
||||||
def _destroy_test_db(self, test_database_name, verbosity):
|
def _destroy_test_db(self, test_database_name, verbosity):
|
||||||
"Internal implementation - remove the test db tables."
|
"Internal implementation - remove the test db tables."
|
||||||
# Remove the test database to clean up after
|
# Remove the test database to clean up after
|
||||||
|
@ -398,4 +401,4 @@ class BaseDatabaseCreation(object):
|
||||||
def sql_table_creation_suffix(self):
|
def sql_table_creation_suffix(self):
|
||||||
"SQL to append to the end of the test table creation statements"
|
"SQL to append to the end of the test table creation statements"
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue