1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Fixed #22199: Bad max_length deconstruction for FileField

This commit is contained in:
Andrew Godwin 2014-03-08 13:59:12 -08:00
parent 28779abb75
commit cd7a2a077e
2 changed files with 16 additions and 7 deletions

View File

@ -270,9 +270,7 @@ class FileField(Field):
def deconstruct(self): def deconstruct(self):
name, path, args, kwargs = super(FileField, self).deconstruct() name, path, args, kwargs = super(FileField, self).deconstruct()
if kwargs.get("max_length", None) != 100: if kwargs.get("max_length", None) == 100:
kwargs["max_length"] = 100
else:
del kwargs["max_length"] del kwargs["max_length"]
kwargs['upload_to'] = self.upload_to kwargs['upload_to'] = self.upload_to
if self.storage is not default_storage: if self.storage is not default_storage:

View File

@ -128,6 +128,11 @@ class FieldDeconstructionTests(TestCase):
self.assertEqual(path, "django.db.models.FileField") self.assertEqual(path, "django.db.models.FileField")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {"upload_to": "foo/bar"}) self.assertEqual(kwargs, {"upload_to": "foo/bar"})
field = models.FileField(upload_to="foo/bar", max_length=200)
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.FileField")
self.assertEqual(args, [])
self.assertEqual(kwargs, {"upload_to": "foo/bar", "max_length": 200})
def test_file_path_field(self): def test_file_path_field(self):
field = models.FilePathField(match=".*\.txt$") field = models.FilePathField(match=".*\.txt$")
@ -135,11 +140,11 @@ class FieldDeconstructionTests(TestCase):
self.assertEqual(path, "django.db.models.FilePathField") self.assertEqual(path, "django.db.models.FilePathField")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {"match": ".*\.txt$"}) self.assertEqual(kwargs, {"match": ".*\.txt$"})
field = models.FilePathField(recursive=True, allow_folders=True) field = models.FilePathField(recursive=True, allow_folders=True, max_length=123)
name, path, args, kwargs = field.deconstruct() name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.FilePathField") self.assertEqual(path, "django.db.models.FilePathField")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {"recursive": True, "allow_folders": True}) self.assertEqual(kwargs, {"recursive": True, "allow_folders": True, "max_length": 123})
def test_float_field(self): def test_float_field(self):
field = models.FloatField() field = models.FloatField()
@ -276,11 +281,11 @@ class FieldDeconstructionTests(TestCase):
self.assertEqual(path, "django.db.models.SlugField") self.assertEqual(path, "django.db.models.SlugField")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {}) self.assertEqual(kwargs, {})
field = models.SlugField(db_index=False) field = models.SlugField(db_index=False, max_length=231)
name, path, args, kwargs = field.deconstruct() name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.SlugField") self.assertEqual(path, "django.db.models.SlugField")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {"db_index": False}) self.assertEqual(kwargs, {"db_index": False, "max_length": 231})
def test_small_integer_field(self): def test_small_integer_field(self):
field = models.SmallIntegerField() field = models.SmallIntegerField()
@ -302,3 +307,9 @@ class FieldDeconstructionTests(TestCase):
self.assertEqual(path, "django.db.models.URLField") self.assertEqual(path, "django.db.models.URLField")
self.assertEqual(args, []) self.assertEqual(args, [])
self.assertEqual(kwargs, {}) self.assertEqual(kwargs, {})
field = models.URLField(max_length=231)
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.URLField")
self.assertEqual(args, [])
self.assertEqual(kwargs, {"max_length": 231})