diff options
| author | Prabakaran Kumaresshan <k_prabakaran@hotmail.com> | 2018-10-19 12:26:33 +0530 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-10-23 10:05:24 -0400 |
| commit | 10d82c85aa5f8bd6adff0db49798dd368455cdcf (patch) | |
| tree | 76e2494c9d348e3ad5dac5fe5d40c15bc47986bb | |
| parent | 136a900ef98a7b7261a124308c8c26370ff2d5e4 (diff) | |
Fixed #29831 -- Added validation for makemigrations --name.
| -rw-r--r-- | django/core/management/commands/makemigrations.py | 2 | ||||
| -rw-r--r-- | docs/ref/django-admin.txt | 3 | ||||
| -rw-r--r-- | tests/migrations/test_commands.py | 5 |
3 files changed, 9 insertions, 1 deletions
diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py index ea90467d22..cdccb8e9b3 100644 --- a/django/core/management/commands/makemigrations.py +++ b/django/core/management/commands/makemigrations.py @@ -61,6 +61,8 @@ class Command(BaseCommand): self.merge = options['merge'] self.empty = options['empty'] self.migration_name = options['name'] + if self.migration_name and not self.migration_name.isidentifier(): + raise CommandError('The migration name must be a valid Python identifier.') check_changes = options['check_changes'] # Make sure the app they asked for exists diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 168f476eeb..f7fa7777e6 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -756,7 +756,8 @@ Enables fixing of migration conflicts. .. django-admin-option:: --name NAME, -n NAME -Allows naming the generated migration(s) instead of using a generated name. +Allows naming the generated migration(s) instead of using a generated name. The +name must be a valid Python :ref:`identifier <python:identifiers>`. .. django-admin-option:: --check diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py index 33b85578af..816abea65a 100644 --- a/tests/migrations/test_commands.py +++ b/tests/migrations/test_commands.py @@ -1352,6 +1352,11 @@ class MakeMigrationsTests(MigrationTestBase): self.assertIn("dependencies=[\n('migrations','0001_%s'),\n]" % migration_name_0001, content) self.assertIn("operations=[\n]", content) + def test_makemigrations_with_invalid_custom_name(self): + msg = 'The migration name must be a valid Python identifier.' + with self.assertRaisesMessage(CommandError, msg): + call_command('makemigrations', 'migrations', '--name', 'invalid name', '--empty') + def test_makemigrations_check(self): """ makemigrations --check should exit with a non-zero status when |
