summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAdam Chainz <adam@adamj.eu>2015-04-01 22:33:27 +0100
committerTim Graham <timograham@gmail.com>2015-04-09 12:15:50 -0400
commit5564d0f2ee9b33d30471eafef30efa71c7c47459 (patch)
treee0ddcce25dd2249f1a34a9a2e575ba233a234fcc /django
parent727e40c879f893a2c336e396aafdcad60b5d224c (diff)
Fixed #24560 -- Added a --dry-run mode to the createcachetable command.
Diffstat (limited to 'django')
-rw-r--r--django/core/management/commands/createcachetable.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/django/core/management/commands/createcachetable.py b/django/core/management/commands/createcachetable.py
index 4c014c88fd..c1ec4539b6 100644
--- a/django/core/management/commands/createcachetable.py
+++ b/django/core/management/commands/createcachetable.py
@@ -22,21 +22,25 @@ class Command(BaseCommand):
default=DEFAULT_DB_ALIAS,
help='Nominates a database onto which the cache tables will be '
'installed. Defaults to the "default" database.')
+ parser.add_argument('--dry-run', action='store_true', dest='dry_run',
+ help='Does not create the table, just prints the SQL that would '
+ 'be run.')
def handle(self, *tablenames, **options):
db = options.get('database')
self.verbosity = int(options.get('verbosity'))
+ dry_run = options.get('dry_run')
if len(tablenames):
# Legacy behavior, tablename specified as argument
for tablename in tablenames:
- self.create_table(db, tablename)
+ self.create_table(db, tablename, dry_run)
else:
for cache_alias in settings.CACHES:
cache = caches[cache_alias]
if isinstance(cache, BaseDatabaseCache):
- self.create_table(db, cache._table)
+ self.create_table(db, cache._table, dry_run)
- def create_table(self, database, tablename):
+ def create_table(self, database, tablename, dry_run):
cache = BaseDatabaseCache(tablename, {})
if not router.allow_migrate_model(database, cache.cache_model_class):
return
@@ -74,11 +78,19 @@ class Command(BaseCommand):
full_statement.append(' %s%s' % (line, ',' if i < len(table_output) - 1 else ''))
full_statement.append(');')
+ full_statement = "\n".join(full_statement)
+
+ if dry_run:
+ self.stdout.write(full_statement)
+ for statement in index_output:
+ self.stdout.write(statement)
+ return
+
with transaction.atomic(using=database,
savepoint=connection.features.can_rollback_ddl):
with connection.cursor() as curs:
try:
- curs.execute("\n".join(full_statement))
+ curs.execute(full_statement)
except DatabaseError as e:
raise CommandError(
"Cache table '%s' could not be created.\nThe error was: %s." %