diff --git a/docs/changelog.rst b/docs/changelog.rst index b61a06d6..55cae981 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,6 +5,7 @@ Changelog Changes in 0.8.2 ================ +- ImageFields now include PIL error messages if invalid error (#353) - Fixed hashing of EmbeddedDocuments (#348) - Added lock when calling doc.Delete() for when signals have no sender (#350) - Reload forces read preference to be PRIMARY (#355) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 9bc18e02..451f7aca 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -1259,8 +1259,8 @@ class ImageGridFsProxy(GridFSProxy): try: img = Image.open(file_obj) img_format = img.format - except: - raise ValidationError('Invalid image') + except Exception, e: + raise ValidationError('Invalid image: %s' % e) if (field.size and (img.size[0] > field.size['width'] or img.size[1] > field.size['height'])): diff --git a/tests/fields/file_tests.py b/tests/fields/file_tests.py index 5bcc3a2b..dfef9eed 100644 --- a/tests/fields/file_tests.py +++ b/tests/fields/file_tests.py @@ -269,6 +269,17 @@ class FileTest(unittest.TestCase): 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.image.put(open(TEST_IMAGE_PATH, 'rb')) t.save()