예제 #1
0
 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))
예제 #2
0
 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)
예제 #3
0
 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))
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
 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)
예제 #7
0
 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)
예제 #8
0
 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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
 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)
예제 #13
0
 def testBlobbableEmptyATImage(self):
     obj = ATImage('foo')
     blobbable = IBlobbable(obj)
     target = Blob()
     blobbable.feed(target)
예제 #14
0
 def afterSetUp(self):
     self.image = ATImage('test')
     self.field = self.image.getField('image')
     self.sizes = ATImageSchema['image'].sizes   # save original value
예제 #15
0
 def afterSetUp(self):
     self.image = ATImage('test')
     self.field = self.image.getField('image')
     self.sizes = ATImageSchema['image'].sizes  # save original value