ImageFields now include PIL error messages if invalid error (#353)

This commit is contained in:
Ross Lawley 2013-06-05 11:45:08 +00:00
parent a246154961
commit e5648a4af9
3 changed files with 14 additions and 2 deletions

View File

@ -5,6 +5,7 @@ Changelog
Changes in 0.8.2 Changes in 0.8.2
================ ================
- ImageFields now include PIL error messages if invalid error (#353)
- Fixed hashing of EmbeddedDocuments (#348) - Fixed hashing of EmbeddedDocuments (#348)
- Added lock when calling doc.Delete() for when signals have no sender (#350) - Added lock when calling doc.Delete() for when signals have no sender (#350)
- Reload forces read preference to be PRIMARY (#355) - Reload forces read preference to be PRIMARY (#355)

View File

@ -1259,8 +1259,8 @@ class ImageGridFsProxy(GridFSProxy):
try: try:
img = Image.open(file_obj) img = Image.open(file_obj)
img_format = img.format img_format = img.format
except: except Exception, e:
raise ValidationError('Invalid image') raise ValidationError('Invalid image: %s' % e)
if (field.size and (img.size[0] > field.size['width'] or if (field.size and (img.size[0] > field.size['width'] or
img.size[1] > field.size['height'])): img.size[1] > field.size['height'])):

View File

@ -269,6 +269,17 @@ class FileTest(unittest.TestCase):
TestImage.drop_collection() TestImage.drop_collection()
with tempfile.TemporaryFile() as f:
f.write(b("Hello World!"))
f.flush()
t = TestImage()
try:
t.image.put(f)
self.fail("Should have raised an invalidation error")
except ValidationError, e:
self.assertEquals("%s" % e, "Invalid image: cannot identify image file")
t = TestImage() t = TestImage()
t.image.put(open(TEST_IMAGE_PATH, 'rb')) t.image.put(open(TEST_IMAGE_PATH, 'rb'))
t.save() t.save()