1
0
mirror of https://github.com/django/django.git synced 2025-10-24 14:16:09 +00:00

Changes to ImageFileDescriptor and ImageField to fix a few cases of setting image dimension fields.

* Moved dimension field update logic out of `ImageFileDescriptor.__set__` and into its own method on `ImageField`.
 * New `ImageField.update_dimension_fields` method is attached to model instance's `post_init` signal so that:
   * Dimension fields are set when defined before the ImageField.
   * Dimension fields are set when the field is assigned in the model constructor (fixes #11196), but only if the dimension fields don't already have values, so we avoid updating the dimensions every time an object is loaded from the database (fixes #11084).
 * Clear dimension fields when the ImageField is set to None, which also causes dimension fields to be cleared when `ImageFieldFile.delete()` is used.
 * Added many more tests for ImageField that test edge cases we weren't testing before, and moved the ImageField tests out of `file_storage` and into their own module within `model_fields`.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@10858 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Gary Wilson Jr
2009-05-28 05:46:09 +00:00
parent 7638651cc3
commit d89ba464dd
8 changed files with 621 additions and 152 deletions

View File

@@ -1175,8 +1175,9 @@ True
>>> instance.height
16
# Delete the current file since this is not done by Django.
>>> instance.image.delete()
# Delete the current file since this is not done by Django, but don't save
# because the dimension fields are not null=True.
>>> instance.image.delete(save=False)
>>> f = ImageFileForm(data={'description': u'An image'}, files={'image': SimpleUploadedFile('test.png', image_data)})
>>> f.is_valid()
@@ -1207,9 +1208,9 @@ True
>>> instance.width
16
# Delete the current image since this is not done by Django.
>>> instance.image.delete()
# Delete the current file since this is not done by Django, but don't save
# because the dimension fields are not null=True.
>>> instance.image.delete(save=False)
# Override the file by uploading a new one.
@@ -1224,8 +1225,9 @@ True
>>> instance.width
48
# Delete the current file since this is not done by Django.
>>> instance.image.delete()
# Delete the current file since this is not done by Django, but don't save
# because the dimension fields are not null=True.
>>> instance.image.delete(save=False)
>>> instance.delete()
>>> f = ImageFileForm(data={'description': u'Changed it'}, files={'image': SimpleUploadedFile('test2.png', image_data2)})
@@ -1239,8 +1241,9 @@ True
>>> instance.width
48
# Delete the current file since this is not done by Django.
>>> instance.image.delete()
# Delete the current file since this is not done by Django, but don't save
# because the dimension fields are not null=True.
>>> instance.image.delete(save=False)
>>> instance.delete()
# Test the non-required ImageField