diff options
| author | Claude Paroz <claude@2xlibre.net> | 2018-06-19 09:35:55 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-06-20 15:42:40 -0400 |
| commit | c723a1ff8e76aaef227d5af7a57006cc9bfd2fc8 (patch) | |
| tree | 64720120eaf53292cb55a5118a4772521e807cae /django | |
| parent | c3c7d15c34d6174ff25a49d7c9a57da140769567 (diff) | |
Fixed #29506 -- Added validation for migrate's app_label option.
Thanks MyungSeKyo for the report and the initial patch.
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/management/commands/migrate.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/django/core/management/commands/migrate.py b/django/core/management/commands/migrate.py index 0e27eaa19f..2792484b47 100644 --- a/django/core/management/commands/migrate.py +++ b/django/core/management/commands/migrate.py @@ -100,12 +100,18 @@ class Command(BaseCommand): # If they supplied command line arguments, work out what they mean. target_app_labels_only = True - if options['app_label'] and options['migration_name']: - app_label, migration_name = options['app_label'], options['migration_name'] + if options['app_label']: + # Validate app_label. + app_label = options['app_label'] + try: + apps.get_app_config(app_label) + except LookupError as err: + raise CommandError(str(err)) if app_label not in executor.loader.migrated_apps: - raise CommandError( - "App '%s' does not have migrations." % app_label - ) + raise CommandError("App '%s' does not have migrations." % app_label) + + if options['app_label'] and options['migration_name']: + migration_name = options['migration_name'] if migration_name == "zero": targets = [(app_label, None)] else: @@ -123,11 +129,6 @@ class Command(BaseCommand): targets = [(app_label, migration.name)] target_app_labels_only = False elif options['app_label']: - app_label = options['app_label'] - if app_label not in executor.loader.migrated_apps: - raise CommandError( - "App '%s' does not have migrations." % app_label - ) targets = [key for key in executor.loader.graph.leaf_nodes() if key[0] == app_label] else: targets = executor.loader.graph.leaf_nodes() |
