mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Refs #26521 -- Added the duplicated value to CreateModel validation messages.
Thanks Tim for the suggestion.
This commit is contained in:
		| @@ -17,7 +17,7 @@ def _check_for_duplicates(arg_name, objs): | ||||
|     for val in objs: | ||||
|         if val in used_vals: | ||||
|             raise ValueError( | ||||
|                 'Found duplicate %s in CreateModel operation.' % arg_name | ||||
|                 "Found duplicate value %s in CreateModel %s argument." % (val, arg_name) | ||||
|             ) | ||||
|         used_vals.add(val) | ||||
|  | ||||
| @@ -55,14 +55,14 @@ class CreateModel(ModelOperation): | ||||
|         super(CreateModel, self).__init__(name) | ||||
|         # Sanity-check that there are no duplicated field names, bases, or | ||||
|         # manager names | ||||
|         _check_for_duplicates("field", (name for name, _ in self.fields)) | ||||
|         _check_for_duplicates('fields', (name for name, _ in self.fields)) | ||||
|         _check_for_duplicates( | ||||
|             "base", | ||||
|             'bases', | ||||
|             (base._meta.label_lower if isinstance(base, models.base.ModelBase) else base.lower() | ||||
|              for base in self.bases | ||||
|              if base is not models.Model) | ||||
|         ) | ||||
|         _check_for_duplicates("manager", (name for name, _ in self.managers)) | ||||
|         _check_for_duplicates('managers', (name for name, _ in self.managers)) | ||||
|  | ||||
|     def deconstruct(self): | ||||
|         kwargs = { | ||||
|   | ||||
| @@ -201,7 +201,7 @@ class OperationTests(OperationTestBase): | ||||
|         self.assertNotIn('managers', definition[2]) | ||||
|  | ||||
|     def test_create_model_with_duplicate_field_name(self): | ||||
|         with self.assertRaisesMessage(ValueError, "Found duplicate field in CreateModel operation."): | ||||
|         with self.assertRaisesMessage(ValueError, 'Found duplicate value pink in CreateModel fields argument.'): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 [ | ||||
| @@ -212,31 +212,33 @@ class OperationTests(OperationTestBase): | ||||
|             ) | ||||
|  | ||||
|     def test_create_model_with_duplicate_base(self): | ||||
|         with self.assertRaisesMessage(ValueError, "Found duplicate base in CreateModel operation."): | ||||
|         message = 'Found duplicate value test_crmo.pony in CreateModel bases argument.' | ||||
|         with self.assertRaisesMessage(ValueError, message): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 fields=[], | ||||
|                 bases=("test_crmo.Pony", "test_crmo.Pony",), | ||||
|             ) | ||||
|         with self.assertRaisesMessage(ValueError, "Found duplicate base in CreateModel operation."): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 fields=[], | ||||
|                 bases=(UnicodeModel, UnicodeModel,), | ||||
|             ) | ||||
|         with self.assertRaisesMessage(ValueError, "Found duplicate base in CreateModel operation."): | ||||
|         with self.assertRaisesMessage(ValueError, message): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 fields=[], | ||||
|                 bases=("test_crmo.Pony", "test_crmo.pony",), | ||||
|             ) | ||||
|         with self.assertRaisesMessage(ValueError, "Found duplicate base in CreateModel operation."): | ||||
|         message = 'Found duplicate value migrations.unicodemodel in CreateModel bases argument.' | ||||
|         with self.assertRaisesMessage(ValueError, message): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 fields=[], | ||||
|                 bases=(UnicodeModel, UnicodeModel,), | ||||
|             ) | ||||
|         with self.assertRaisesMessage(ValueError, message): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 fields=[], | ||||
|                 bases=(UnicodeModel, 'migrations.unicodemodel',), | ||||
|             ) | ||||
|         with self.assertRaisesMessage(ValueError, "Found duplicate base in CreateModel operation."): | ||||
|         with self.assertRaisesMessage(ValueError, message): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 fields=[], | ||||
| @@ -244,7 +246,7 @@ class OperationTests(OperationTestBase): | ||||
|             ) | ||||
|  | ||||
|     def test_create_model_with_duplicate_manager_name(self): | ||||
|         with self.assertRaisesMessage(ValueError, "Found duplicate manager in CreateModel operation."): | ||||
|         with self.assertRaisesMessage(ValueError, 'Found duplicate value objects in CreateModel managers argument.'): | ||||
|             migrations.CreateModel( | ||||
|                 "Pony", | ||||
|                 fields=[], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user