def testCustomSizes(self): data = self.getImage() folder = self.folder image = folder[folder.invokeFactory('Image', id='foo', image=data)] # set custom image sizes settings = getSettings() settings.allowed_sizes = [u'foo 23:23', u'bar 6:8'] # make sure traversing works with the new sizes traverse = folder.REQUEST.traverseName foo = traverse(image, 'image_foo') self.assertEqual(foo.getContentType(), 'image/png') self.assertEqual(foo.data[1:4], 'PNG') self.assertEqual(foo.width, 23) self.assertEqual(foo.height, 23) # also check the generated tag url = image.absolute_url() + '/image_foo' tag = '<img src="%s" alt="foo" title="foo" height="23" width="23" />' self.assertEqual(foo.tag(), tag % url) # and the other specified size bar = traverse(image, 'image_bar') self.assertEqual(bar.getContentType(), 'image/png') self.assertEqual(bar.data[1:4], 'PNG') self.assertEqual(bar.width, 6) self.assertEqual(bar.height, 6) # make sure the traversal adapter was called in fact self.assertEqual(self.counter, 2)
def afterSetUp(self): data = self.getImage() folder = self.folder self.image = folder[folder.invokeFactory('Image', id='foo', image=data)] self.adapter = ImageScaling(self.image, None) self.settings = getSettings() self.settings.allowed_sizes = [u'foo 60:60']
def afterSetUp(self): data = self.getImage() folder = self.folder self.image = folder[folder.invokeFactory( 'Image', id='foo', image=data)] self.adapter = ImageScaling(self.image, None) self.settings = getSettings() self.settings.allowed_sizes = [u'foo 60:60']
def testCustomSizes(self): # set custom image sizes settings = getSettings() settings.allowed_sizes = [u'foo 23:23'] # make sure traversing works with the new sizes uid, ext, width, height = self.traverse('image/foo') self.assertEqual(width, 23) self.assertEqual(height, 23)
def afterSetUp(self): data = self.getImage() folder = self.folder self.image = folder[folder.invokeFactory('Image', id='foo', image=data)] self.field = self.image.getField('image') self.handler = DefaultImageScaleHandler(self.field) settings = getSettings() settings.allowed_sizes = [u'foo 60:60']
def testAvailableSizes(self): # make sure the field was patched self.assertEqual(self.field.getAvailableSizes.func_code, getAvailableSizes.func_code) # set custom image sizes and check the helper settings = getSettings() settings.allowed_sizes = [u'foo 23:23', u'bar 8:8'] self.assertEqual(self.field.getAvailableSizes(self.image), dict(foo=(23, 23), bar=(8, 8)))
def testPublishCustomSizeViaName(self): # set custom image sizes settings = getSettings() settings.allowed_sizes = [u'foo 23:23'] # make sure traversing works as expected base = '/'.join(self.folder.getPhysicalPath()) credentials = self.getCredentials() response = self.publish(base + '/foo/@@images/image/foo', basic=credentials) self.assertEqual(response.getStatus(), 200) self.assertImage(response.getBody(), 'JPEG', (23, 23))
def testPublishCustomSizeViaUID(self): # set custom image sizes settings = getSettings() settings.allowed_sizes = [u'foo 23:23'] scale = self.view.scale('image', 'foo') # make sure the referenced image scale is available url = scale.url.replace('http://nohost', '') response = self.publish(url, basic=self.getCredentials()) self.assertEqual(response.getStatus(), 200) self.assertEqual(response.getHeader('Content-Type'), 'image/jpeg') self.assertImage(response.getBody(), 'JPEG', (23, 23))
def testCustomSizeChange(self): # set custom image sizes & view a scale settings = getSettings() settings.allowed_sizes = [u'foo 23:23'] uid1, ext, width, height = self.traverse('image/foo') self.assertEqual(width, 23) self.assertEqual(height, 23) # now let's update the scale dimensions, after which the scale # should also have been updated... settings.allowed_sizes = [u'foo 42:42'] uid2, ext, width, height = self.traverse('image/foo') self.assertEqual(width, 42) self.assertEqual(height, 42) self.assertNotEqual(uid1, uid2, 'scale not updated?')
def testCustomSizesForNewsItems(self): # let's also check custom scales work for "News Item" content data = self.getImage() folder = self.folder newsitem = folder[folder.invokeFactory('News Item', id='newsitem', image=data)] # set custom image sizes settings = getSettings() settings.allowed_sizes = [u'foo 23:23'] # make sure traversing works with the new sizes traverse = folder.REQUEST.traverseName foo = traverse(newsitem, 'image_foo') self.assertEqual(foo.getContentType(), 'image/png') self.assertEqual(foo.data[1:4], 'PNG') self.assertEqual(foo.width, 23) self.assertEqual(foo.height, 23)
def testAllowedSizes(self): # test the defaults # for readability, pep8 is not applied to the dict below self.assertEqual(getAllowedSizes(), dict( large=(768, 768), preview=(400, 400), mini=(200, 200), thumb=(128, 128), tile=(64, 64), icon=(32, 32), listing=(16, 16))) # override and test again settings = getSettings() settings.allowed_sizes = [u'foo bar 23:23'] self.assertEqual(getAllowedSizes(), dict(foo_bar=(23, 23)))
def testAllowedSizes(self): # test the defaults # for readability, pep8 is not applied to the dict below self.assertEqual( getAllowedSizes(), dict(large=(768, 768), preview=(400, 400), mini=(200, 200), thumb=(128, 128), tile=(64, 64), icon=(32, 32), listing=(16, 16))) # override and test again settings = getSettings() settings.allowed_sizes = [u'foo bar 23:23'] self.assertEqual(getAllowedSizes(), dict(foo_bar=(23, 23)))
def testPublishCustomSize(self): data = self.getImage() folder = self.folder folder.invokeFactory('Image', id='foo', image=data) # set custom image sizes settings = getSettings() settings.allowed_sizes = [u'foo 23:23'] # make sure traversing works as expected base = '/'.join(folder.getPhysicalPath()) credentials = self.getCredentials() response = self.publish(base + '/foo/image_foo', basic=credentials) self.assertEqual(response.getStatus(), 200) foo = open(StringIO(response.getBody())) self.assertEqual(foo.format, 'PNG') self.assertEqual(foo.size, (23, 23)) # make sure the traversal adapter was call in fact self.assertEqual(self.counter, 3)
def testCustomSizesWithSpaces(self): data = self.getImage() folder = self.folder image = folder[folder.invokeFactory('Image', id='foo', image=data)] # set custom image sizes settings = getSettings() settings.allowed_sizes = [u'foo bar 23:23'] # make sure traversing works with the new sizes traverse = folder.REQUEST.traverseName foo_bar = traverse(image, 'image_foo_bar') self.assertEqual(foo_bar.getContentType(), 'image/png') self.assertEqual(foo_bar.data[1:4], 'PNG') self.assertEqual(foo_bar.width, 23) self.assertEqual(foo_bar.height, 23) # also check the generated tag url = image.absolute_url() + '/image_foo_bar' tag = '<img src="%s" alt="foo" title="foo" height="23" width="23" />' self.assertEqual(foo_bar.tag(), tag % url)
def testQualityChange(self): settings = getSettings() self.image.update(image=self.getImage('image.jpg')) data = self.getImage('image.jpg') + '\x00' * (1 << 16) # get size of image scaled at default scaling quality self.assertEqual(settings.quality, 88) from Products.ATContentTypes.content.image import ATImage image = ATImage('image').__of__(self.folder) image.setImage(data) adapter = ImageScaling(image, None) img_high_quality = adapter.scale('image', width=100, height=80) size_high_quality = img_high_quality.size # lower scaling quality and get scaled image's size at that quality settings.quality = 20 self.assertEqual(settings.quality, 20) image = ATImage('image').__of__(self.folder) image.setImage(data) adapter = ImageScaling(image, None) img_low_quality = adapter.scale('image', width=100, height=80) size_low_quality = img_low_quality.size # data should be smaller at lower quality self.assertTrue(size_high_quality > size_low_quality)
def testCustomSizeChange(self): data = self.getImage() folder = self.folder image = folder[folder.invokeFactory('Image', id='foo', image=data)] # set custom image sizes & view a scale settings = getSettings() settings.allowed_sizes = [u'foo 23:23'] traverse = folder.REQUEST.traverseName foo = traverse(image, 'image_foo') self.assertEqual(foo.width, 23) self.assertEqual(foo.height, 23) # now let's update the scale dimensions, after which the scale # should still be the same... settings.allowed_sizes = [u'foo 42:42'] foo = traverse(image, 'image_foo') self.assertEqual(foo.width, 23) self.assertEqual(foo.height, 23) # we first need to trigger recreation of all scales... self.portal.portal_atct.recreateImageScales() foo = traverse(image, 'image_foo') self.assertEqual(foo.width, 42) self.assertEqual(foo.height, 42) # make sure the traversal adapter was call in fact self.assertEqual(self.counter, 3)
def testQuality(self): self.assertEqual(getQuality(), 88) settings = getSettings() settings.quality = 42 self.assertEqual(getQuality(), 42)