mirror of
https://github.com/django/django.git
synced 2024-12-01 15:42:04 +01:00
Fixed #22983: Alert when squashing RunPython operations with referred functions.
This commit is contained in:
parent
4e4c10bc61
commit
ebb13bbd88
@ -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.")
|
||||
|
||||
|
@ -111,6 +111,7 @@ class MigrationWriter(object):
|
||||
|
||||
def __init__(self, migration):
|
||||
self.migration = migration
|
||||
self.needs_manual_porting = False
|
||||
|
||||
def as_string(self):
|
||||
"""
|
||||
@ -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…
Reference in New Issue
Block a user