"""Current command."""
from functools import partial
import alembic
from ..alembic import AlembicCommand
[docs]class Current(AlembicCommand):
"""Shows current db revisions."""
help = "Show current db revisions"
[docs] def add_arguments(self, parser):
parser.add_argument("app_label", nargs="?", help="App label of application to limit the output to.")
[docs] def handle(self, app_label=None, verbosity=0, **kwargs):
verbose = bool(verbosity - 1)
appconfigs = [self.lookup_app(app_label)] if app_label is not None else self.sorcery_apps.values()
for appconfig in appconfigs:
self.stdout.write(self.style.SUCCESS(f"Revision for {appconfig.name} on database {appconfig.db.alias}"))
with alembic.context.EnvironmentContext(
appconfig.config,
appconfig.script,
fn=partial(self.display_version, verbose=verbose, appconfig=appconfig),
) as context:
self.run_env(context, appconfig)
[docs] def display_version(self, rev, context, verbose=False, appconfig=None):
"""Displays the alembic revision."""
if verbose:
self.stdout.write("Current revision(s) for {!r}".format(context.connection.engine.url))
for revision in appconfig.script.get_all_current(rev):
self.stdout.write(revision.cmd_format(verbose))
return []
Command = Current