def manage_afterPUT(self, data, marshall_data, file, context, mimetype,filename, REQUEST, RESPONSE): is_new = False title = self.Title() if not title: is_new = True BaseClass.manage_afterPUT(self, data, marshall_data, file, context, mimetype, filename, REQUEST, RESPONSE) if is_new: notify(ObjectInitializedEvent(self)) else: notify(ObjectEditedEvent(self))
def testCreateScaleWithPdata(self): data = self.getImage() + '\x00' * (1 << 16) from Products.ATContentTypes.content.image import ATImage image = ATImage('image').__of__(self.folder) image.setImage(data) field = image.getField('image') field.swallowResizeExceptions = False from OFS.Image import Pdata self.assertTrue(isinstance(image.getImage().data, Pdata)) adapter = ImageScaling(image, None) foo = adapter.scale('image', width=100, height=80) self.assertFalse(foo is None)
def manage_afterPUT(self, data, marshall_data, file, context, mimetype, filename, REQUEST, RESPONSE): is_new = False title = self.Title() if not title: is_new = True BaseClass.manage_afterPUT(self, data, marshall_data, file, context, mimetype, filename, REQUEST, RESPONSE) if is_new: notify(ObjectInitializedEvent(self)) else: notify(ObjectEditedEvent(self))
def download(self): """Override of parent 'download' to make sure we set file attachment name, just in case the field gets confused. """ # if data field is missing filename for whatever reason, update it # (such a case probably due to migration) # we cannot just set the header ourself; inside download (OFS.Image.index_html) # is a RESPONSE.write that writes to the browser before we can change the headers field = self.getPrimaryField() filename = field.getFilename(self) if not filename: field.setFilename(self, self.getId()) return BaseType.download(self)
def testQualityChange(self): iprops = self.portal.portal_properties.imaging_properties 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(iprops.getProperty('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 iprops.manage_changeProperties(quality=20) self.assertEqual(iprops.getProperty('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 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)
class MonkeyPatchTests(ImagingTestCase): def afterSetUp(self): self.image = ATImage('test') self.field = self.image.getField('image') self.sizes = ATImageSchema['image'].sizes # save original value def beforeTearDown(self): ATImageSchema['image'].sizes = self.sizes # restore original value 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 testAvailableSizesInstanceMethod(self): marker = dict(foo=23) def foo(self): return marker ATImage.foo = foo # create new instance method ATImageSchema['image'].sizes = 'foo' # restore original value self.assertEqual(self.field.getAvailableSizes(self.image), marker) def testAvailableSizesCallable(self): def foo(): return 'foo!' ATImageSchema['image'].sizes = foo # store method in schema self.assertEqual(self.field.getAvailableSizes(self.image), 'foo!') def testAvailableSizesOnField(self): marker = dict(foo=23) ATImageSchema['image'].sizes = marker # store dict in schema self.assertEqual(self.field.getAvailableSizes(self.image), marker)
def testBlobbableEmptyATImage(self): obj = ATImage('foo') blobbable = IBlobbable(obj) target = Blob() blobbable.feed(target)
def afterSetUp(self): self.image = ATImage('test') self.field = self.image.getField('image') self.sizes = ATImageSchema['image'].sizes # save original value