Add --fake option to migrate
This commit is contained in:
parent
3f7113f1d9
commit
52643a69e3
|
@ -24,6 +24,8 @@ class Command(BaseCommand):
|
||||||
make_option('--database', action='store', dest='database',
|
make_option('--database', action='store', dest='database',
|
||||||
default=DEFAULT_DB_ALIAS, help='Nominates a database to synchronize. '
|
default=DEFAULT_DB_ALIAS, help='Nominates a database to synchronize. '
|
||||||
'Defaults to the "default" database.'),
|
'Defaults to the "default" database.'),
|
||||||
|
make_option('--fake', action='store_true', dest='fake', default=False,
|
||||||
|
help='Mark migrations as run without actually running them'),
|
||||||
)
|
)
|
||||||
|
|
||||||
help = "Updates database schema. Manages both apps with migrations and those without."
|
help = "Updates database schema. Manages both apps with migrations and those without."
|
||||||
|
@ -109,7 +111,7 @@ class Command(BaseCommand):
|
||||||
if self.verbosity >= 1:
|
if self.verbosity >= 1:
|
||||||
self.stdout.write(" No migrations needed.")
|
self.stdout.write(" No migrations needed.")
|
||||||
else:
|
else:
|
||||||
executor.migrate(targets, plan)
|
executor.migrate(targets, plan, fake=options.get("fake", False))
|
||||||
|
|
||||||
def migration_progress_callback(self, action, migration):
|
def migration_progress_callback(self, action, migration):
|
||||||
if self.verbosity >= 1:
|
if self.verbosity >= 1:
|
||||||
|
|
|
@ -44,7 +44,7 @@ class MigrationExecutor(object):
|
||||||
applied.add(migration)
|
applied.add(migration)
|
||||||
return plan
|
return plan
|
||||||
|
|
||||||
def migrate(self, targets, plan=None):
|
def migrate(self, targets, plan=None, fake=False):
|
||||||
"""
|
"""
|
||||||
Migrates the database up to the given targets.
|
Migrates the database up to the given targets.
|
||||||
"""
|
"""
|
||||||
|
@ -52,16 +52,17 @@ class MigrationExecutor(object):
|
||||||
plan = self.migration_plan(targets)
|
plan = self.migration_plan(targets)
|
||||||
for migration, backwards in plan:
|
for migration, backwards in plan:
|
||||||
if not backwards:
|
if not backwards:
|
||||||
self.apply_migration(migration)
|
self.apply_migration(migration, fake=fake)
|
||||||
else:
|
else:
|
||||||
self.unapply_migration(migration)
|
self.unapply_migration(migration, fake=fake)
|
||||||
|
|
||||||
def apply_migration(self, migration):
|
def apply_migration(self, migration, fake=False):
|
||||||
"""
|
"""
|
||||||
Runs a migration forwards.
|
Runs a migration forwards.
|
||||||
"""
|
"""
|
||||||
if self.progress_callback:
|
if self.progress_callback:
|
||||||
self.progress_callback("apply_start", migration)
|
self.progress_callback("apply_start", migration)
|
||||||
|
if not fake:
|
||||||
with self.connection.schema_editor() as schema_editor:
|
with self.connection.schema_editor() as schema_editor:
|
||||||
project_state = self.loader.graph.project_state((migration.app_label, migration.name), at_end=False)
|
project_state = self.loader.graph.project_state((migration.app_label, migration.name), at_end=False)
|
||||||
migration.apply(project_state, schema_editor)
|
migration.apply(project_state, schema_editor)
|
||||||
|
@ -69,12 +70,13 @@ class MigrationExecutor(object):
|
||||||
if self.progress_callback:
|
if self.progress_callback:
|
||||||
self.progress_callback("apply_success", migration)
|
self.progress_callback("apply_success", migration)
|
||||||
|
|
||||||
def unapply_migration(self, migration):
|
def unapply_migration(self, migration, fake=False):
|
||||||
"""
|
"""
|
||||||
Runs a migration backwards.
|
Runs a migration backwards.
|
||||||
"""
|
"""
|
||||||
if self.progress_callback:
|
if self.progress_callback:
|
||||||
self.progress_callback("unapply_start", migration)
|
self.progress_callback("unapply_start", migration)
|
||||||
|
if not fake:
|
||||||
with self.connection.schema_editor() as schema_editor:
|
with self.connection.schema_editor() as schema_editor:
|
||||||
project_state = self.loader.graph.project_state((migration.app_label, migration.name), at_end=False)
|
project_state = self.loader.graph.project_state((migration.app_label, migration.name), at_end=False)
|
||||||
migration.unapply(project_state, schema_editor)
|
migration.unapply(project_state, schema_editor)
|
||||||
|
|
Loading…
Reference in New Issue