mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Merge pull request #2938 from dekkers/ticket_23071
Fixed #23071 -- Use last migration's name in dependency to other app
This commit is contained in:
		| @@ -254,13 +254,13 @@ class MigrationAutodetector(object): | ||||
|                                     # If we can't find the other app, we add a first/last dependency, | ||||
|                                     # but only if we've already been through once and checked everything | ||||
|                                     if chop_mode: | ||||
|                                         # If the app already exists, we add __latest__, as we don't know which | ||||
|                                         # migration contains the target field. | ||||
|                                         # If the app already exists, we add a dependency on the last migration, | ||||
|                                         # as we don't know which migration contains the target field. | ||||
|                                         # If it's not yet migrated or has no migrations, we use __first__ | ||||
|                                         if graph and not graph.root_nodes(dep[0]): | ||||
|                                             operation_dependencies.add((dep[0], "__first__")) | ||||
|                                         if graph and graph.leaf_nodes(dep[0]): | ||||
|                                             operation_dependencies.add(graph.leaf_nodes(dep[0])[0]) | ||||
|                                         else: | ||||
|                                             operation_dependencies.add((dep[0], "__latest__")) | ||||
|                                             operation_dependencies.add((dep[0], "__first__")) | ||||
|                                     else: | ||||
|                                         deps_satisfied = False | ||||
|                     if deps_satisfied: | ||||
|   | ||||
| @@ -136,7 +136,7 @@ class MigrationLoader(object): | ||||
|             return self.disk_migrations[results[0]] | ||||
|  | ||||
|     def check_key(self, key, current_app): | ||||
|         if (key[1] != "__first__" and key[1] != "__latest__") or key in self.graph: | ||||
|         if key[1] != "__first__" or key in self.graph: | ||||
|             return key | ||||
|         # Special-case __first__, which means "the first migration" for | ||||
|         # migrated apps, and is ignored for unmigrated apps. It allows | ||||
|   | ||||
| @@ -1069,7 +1069,8 @@ class AutodetectorTests(TestCase): | ||||
|     @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"}) | ||||
|     def test_last_dependency(self): | ||||
|         """ | ||||
|         Tests that a dependency to an app with existing migrations uses __latest__. | ||||
|         Tests that a dependency to an app with existing migrations uses the | ||||
|         last migration of that app. | ||||
|         """ | ||||
|         # Load graph | ||||
|         loader = MigrationLoader(connection) | ||||
| @@ -1084,4 +1085,4 @@ class AutodetectorTests(TestCase): | ||||
|         self.assertOperationTypes(changes, 'otherapp', 0, ["CreateModel"]) | ||||
|         self.assertOperationAttributes(changes, 'otherapp', 0, 0, name="Book") | ||||
|         # Right dependencies? | ||||
|         self.assertEqual(changes['otherapp'][0].dependencies, [("migrations", "__latest__")]) | ||||
|         self.assertEqual(changes['otherapp'][0].dependencies, [("migrations", "0002_second")]) | ||||
|   | ||||
| @@ -122,26 +122,6 @@ class LoaderTests(TestCase): | ||||
|             ], | ||||
|         ) | ||||
|  | ||||
|     @modify_settings(INSTALLED_APPS={'append': 'basic'}) | ||||
|     @override_settings(MIGRATION_MODULES={ | ||||
|         "migrations": "migrations.test_migrations_latest", | ||||
|         "basic": "migrations.test_migrations_latest_basic", | ||||
|     }) | ||||
|     def test_latest(self): | ||||
|         """ | ||||
|         Makes sure that __latest__ works correctly. | ||||
|         """ | ||||
|         # Load and test the plan | ||||
|         migration_loader = MigrationLoader(connection) | ||||
|         self.assertEqual( | ||||
|             migration_loader.graph.forwards_plan(("migrations", "0001_initial")), | ||||
|             [ | ||||
|                 ("basic", "0001_initial"), | ||||
|                 ("basic", "0002_second"), | ||||
|                 ("migrations", "0001_initial"), | ||||
|             ], | ||||
|         ) | ||||
|  | ||||
|     @override_settings(MIGRATION_MODULES={ | ||||
|         "migrations": "migrations.test_migrations_first", | ||||
|         "migrations2": "migrations2.test_migrations_2_first", | ||||
|   | ||||
| @@ -1,13 +0,0 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ("basic", "__latest__"), | ||||
|     ] | ||||
|  | ||||
|     operations = [] | ||||
| @@ -1,11 +0,0 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [] | ||||
|  | ||||
|     operations = [] | ||||
| @@ -1,13 +0,0 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db import migrations | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ("basic", "0001_initial"), | ||||
|     ] | ||||
|  | ||||
|     operations = [] | ||||
		Reference in New Issue
	
	Block a user