mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[1.8.x] Fixed #24848 -- Fixed ValueError for faulty migrations module.
Added apps to unmigrated apps if the migrations module is a file
or a folder missing __init__.py.
Thanks to Ernest0x for the bug report.
Backport of d73176a842 from master
			
			
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							122e688a9c
						
					
				
				
					commit
					1ac4c7d415
				
			| @@ -77,9 +77,11 @@ class MigrationLoader(object): | ||||
|             else: | ||||
|                 # PY3 will happily import empty dirs as namespaces. | ||||
|                 if not hasattr(module, '__file__'): | ||||
|                     self.unmigrated_apps.add(app_config.label) | ||||
|                     continue | ||||
|                 # Module is not a package (e.g. migrations.py). | ||||
|                 if not hasattr(module, '__path__'): | ||||
|                     self.unmigrated_apps.add(app_config.label) | ||||
|                     continue | ||||
|                 # Force a reload if it's already loaded (tests need this) | ||||
|                 if was_loaded: | ||||
|   | ||||
| @@ -11,3 +11,6 @@ Bugfixes | ||||
|  | ||||
| * Fixed ``BaseRangeField.prepare_value()`` to use each ``base_field``’s | ||||
|   ``prepare_value()`` method (:ticket:`24841`). | ||||
|  | ||||
| * Fixed crash during :djadmin:`makemigrations` if a migrations module either | ||||
|   is missing ``__init__.py`` or is a file (:ticket:`24848`). | ||||
|   | ||||
| @@ -164,12 +164,20 @@ class LoaderTests(TestCase): | ||||
|  | ||||
|     def test_load_module_file(self): | ||||
|         with override_settings(MIGRATION_MODULES={"migrations": "migrations.faulty_migrations.file"}): | ||||
|             MigrationLoader(connection) | ||||
|             loader = MigrationLoader(connection) | ||||
|             self.assertIn( | ||||
|                 "migrations", loader.unmigrated_apps, | ||||
|                 "App with migrations module file not in unmigrated apps." | ||||
|             ) | ||||
|  | ||||
|     @skipIf(six.PY2, "PY2 doesn't load empty dirs.") | ||||
|     def test_load_empty_dir(self): | ||||
|         with override_settings(MIGRATION_MODULES={"migrations": "migrations.faulty_migrations.namespace"}): | ||||
|             MigrationLoader(connection) | ||||
|             loader = MigrationLoader(connection) | ||||
|             self.assertIn( | ||||
|                 "migrations", loader.unmigrated_apps, | ||||
|                 "App missing __init__.py in migrations module not in unmigrated apps." | ||||
|             ) | ||||
|  | ||||
|     @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_squashed"}) | ||||
|     def test_loading_squashed(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user