Loading django/core/management/commands/squashmigrations.py +6 −0 Original line number Diff line number Diff line Loading @@ -107,3 +107,9 @@ class Command(BaseCommand): self.stdout.write(" the new migration will be used for new installs. Once you are sure") self.stdout.write(" all instances of the codebase have applied the migrations you squashed,") self.stdout.write(" you can delete them.") if writer.needs_manual_porting: self.stdout.write(self.style.MIGRATE_HEADING("Manual porting required")) self.stdout.write(" Your migrations contained functions that must be manually copied over,") self.stdout.write(" as we could not safely copy their implementation.") self.stdout.write(" See the comment at the top of the squashed migration for details.") django/db/migrations/writer.py +13 −1 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ class MigrationWriter(object): def __init__(self, migration): self.migration = migration self.needs_manual_porting = False def as_string(self): """ Loading Loading @@ -142,9 +143,20 @@ class MigrationWriter(object): dependencies.append(" %s," % self.serialize(dependency)[0]) items["dependencies"] = "\n".join(dependencies) + "\n" if dependencies else "" # Format imports nicely # Format imports nicely, swapping imports of functions from migration files # for comments migration_imports = set() for line in list(imports): if re.match("^import (.*)\.\d+[^\s]*$", line): migration_imports.add(line.split("import")[1].strip()) imports.remove(line) self.needs_manual_porting = True imports.discard("from django.db import models") items["imports"] = "\n".join(imports) + "\n" if imports else "" if migration_imports: items["imports"] += "\n\n# Functions from the following migrations need manual copying.\n# Move them and any dependencies into this file, then update the\n# RunPython operations to refer to the local versions:\n# %s" % ( "\n# ".join(migration_imports) ) # If there's a replaces, make a string for it if self.migration.replaces: Loading Loading
django/core/management/commands/squashmigrations.py +6 −0 Original line number Diff line number Diff line Loading @@ -107,3 +107,9 @@ class Command(BaseCommand): self.stdout.write(" the new migration will be used for new installs. Once you are sure") self.stdout.write(" all instances of the codebase have applied the migrations you squashed,") self.stdout.write(" you can delete them.") if writer.needs_manual_porting: self.stdout.write(self.style.MIGRATE_HEADING("Manual porting required")) self.stdout.write(" Your migrations contained functions that must be manually copied over,") self.stdout.write(" as we could not safely copy their implementation.") self.stdout.write(" See the comment at the top of the squashed migration for details.")
django/db/migrations/writer.py +13 −1 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ class MigrationWriter(object): def __init__(self, migration): self.migration = migration self.needs_manual_porting = False def as_string(self): """ Loading Loading @@ -142,9 +143,20 @@ class MigrationWriter(object): dependencies.append(" %s," % self.serialize(dependency)[0]) items["dependencies"] = "\n".join(dependencies) + "\n" if dependencies else "" # Format imports nicely # Format imports nicely, swapping imports of functions from migration files # for comments migration_imports = set() for line in list(imports): if re.match("^import (.*)\.\d+[^\s]*$", line): migration_imports.add(line.split("import")[1].strip()) imports.remove(line) self.needs_manual_porting = True imports.discard("from django.db import models") items["imports"] = "\n".join(imports) + "\n" if imports else "" if migration_imports: items["imports"] += "\n\n# Functions from the following migrations need manual copying.\n# Move them and any dependencies into this file, then update the\n# RunPython operations to refer to the local versions:\n# %s" % ( "\n# ".join(migration_imports) ) # If there's a replaces, make a string for it if self.migration.replaces: Loading