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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user