summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorRaffaele Salmaso <raffaele@salmaso.org>2014-08-19 15:24:31 +0200
committerTim Graham <timograham@gmail.com>2014-09-02 21:09:18 -0400
commit1435cfbe8dbd85c17c9a25af99f910c407dfa9bd (patch)
tree7b3902cec1c408336b6b908653fb02cecd2a47ee /django
parentbda28097126c0ff77c51d598ccc19663bcd3ee95 (diff)
Fixed #23302 -- Added --name/-n option to makemigrations command
Diffstat (limited to 'django')
-rw-r--r--django/core/management/commands/makemigrations.py10
-rw-r--r--django/db/migrations/autodetector.py10
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