def validate_og_fallback_image(value): """Check if fallback image follows best practices on MIME type, size, dimensions and aspect ratio. """ if value is None: return True filename, data = b64decode_file(value) image = NamedBlobImage(data=data, filename=filename) if image.contentType not in OG_LEAD_IMAGE_MIME_TYPES: raise Invalid(MSG_INVALID_OG_LEAD_IMAGE_MIME_TYPE) if image.getSize() > OG_LEAD_IMAGE_MAX_SIZE: raise Invalid(MSG_INVALID_OG_LEAD_IMAGE_SIZE) width, height = image.getImageSize() if width < OG_LEAD_IMAGE_MIN_WIDTH or height < OG_LEAD_IMAGE_MIN_HEIGHT: raise Invalid(MSG_INVALID_OG_LEAD_IMAGE_DIMENSIONS) aspect_ratio = width / height if aspect_ratio < OG_LEAD_IMAGE_MIN_ASPECT_RATIO: raise Invalid(MSG_INVALID_OG_LEAD_IMAGE_ASPECT_RATIO) return True
def test_opened_file_storable(self): data = getFile('image.gif') f = tempfile.NamedTemporaryFile(delete=False) try: path = f.name f.write(data) f.close() with open(path, 'rb') as f: fi = NamedBlobImage(f, filename=u'image.gif') finally: if os.path.exists(path): os.remove(path) self.assertEqual(303, fi.getSize())
def test_filechunk_storable(self): fi = NamedBlobImage(FileChunk(getFile('image.gif').read()), filename=u'image.gif') self.assertEqual(303, fi.getSize())
def test_pdata_storable(self): pdata = Pdata(getFile('image.gif').read()) fi = NamedBlobImage(pdata, filename=u'image.gif') self.assertEqual(303, fi.getSize())
def test_str_storable(self): fi = NamedBlobImage(getFile('image.gif'), filename=u'image.gif') self.assertEqual(303, fi.getSize())