diff options
| author | Raffaele Salmaso <raffaele@salmaso.org> | 2014-08-19 15:24:31 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-09-02 21:09:18 -0400 |
| commit | 1435cfbe8dbd85c17c9a25af99f910c407dfa9bd (patch) | |
| tree | 7b3902cec1c408336b6b908653fb02cecd2a47ee /django | |
| parent | bda28097126c0ff77c51d598ccc19663bcd3ee95 (diff) | |
Fixed #23302 -- Added --name/-n option to makemigrations command
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/management/commands/makemigrations.py | 10 | ||||
| -rw-r--r-- | django/db/migrations/autodetector.py | 10 |
2 files changed, 14 insertions, 6 deletions
diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py index b1a9e0c017..96a0189ebb 100644 --- a/django/core/management/commands/makemigrations.py +++ b/django/core/management/commands/makemigrations.py @@ -28,6 +28,8 @@ class Command(BaseCommand): help="Create an empty migration.") parser.add_argument('--noinput', action='store_false', dest='interactive', default=True, help='Tells Django to NOT prompt the user for input of any kind.') + parser.add_argument('-n', '--name', action='store', dest='name', default=None, + help="Use this name for migration file(s).") def handle(self, *app_labels, **options): @@ -36,6 +38,7 @@ class Command(BaseCommand): self.dry_run = options.get('dry_run', False) self.merge = options.get('merge', False) self.empty = options.get('empty', False) + self.migration_name = options.get('name', None) # Make sure the app they asked for exists app_labels = set(app_labels) @@ -98,7 +101,11 @@ class Command(BaseCommand): (app, [Migration("custom", app)]) for app in app_labels ) - changes = autodetector.arrange_for_graph(changes, loader.graph) + changes = autodetector.arrange_for_graph( + changes=changes, + graph=loader.graph, + migration_name=self.migration_name, + ) self.write_migration_files(changes) return @@ -107,6 +114,7 @@ class Command(BaseCommand): graph=loader.graph, trim_to_apps=app_labels or None, convert_apps=app_labels or None, + migration_name=self.migration_name, ) # No changes? Tell them. diff --git a/django/db/migrations/autodetector.py b/django/db/migrations/autodetector.py index 4a837fbba1..41884058b7 100644 --- a/django/db/migrations/autodetector.py +++ b/django/db/migrations/autodetector.py @@ -31,14 +31,14 @@ class MigrationAutodetector(object): self.to_state = to_state self.questioner = questioner or MigrationQuestioner() - def changes(self, graph, trim_to_apps=None, convert_apps=None): + def changes(self, graph, trim_to_apps=None, convert_apps=None, migration_name=None): """ Main entry point to produce a list of appliable changes. Takes a graph to base names on and an optional set of apps to try and restrict to (restriction is not guaranteed) """ changes = self._detect_changes(convert_apps, graph) - changes = self.arrange_for_graph(changes, graph) + changes = self.arrange_for_graph(changes, graph, migration_name) if trim_to_apps: changes = self._trim_to_apps(changes, trim_to_apps) return changes @@ -951,7 +951,7 @@ class MigrationAutodetector(object): dependencies=dependencies, ) - def arrange_for_graph(self, changes, graph): + def arrange_for_graph(self, changes, graph, migration_name=None): """ Takes in a result from changes() and a MigrationGraph, and fixes the names and dependencies of the changes so they @@ -985,11 +985,11 @@ class MigrationAutodetector(object): if i == 0 and app_leaf: migration.dependencies.append(app_leaf) if i == 0 and not app_leaf: - new_name = "0001_initial" + new_name = "0001_%s" % migration_name if migration_name else "0001_initial" else: new_name = "%04i_%s" % ( next_number, - self.suggest_name(migration.operations)[:100], + migration_name or self.suggest_name(migration.operations)[:100], ) name_map[(app_label, migration.name)] = (app_label, new_name) next_number += 1 |
