Esempio n. 1
0
 def testScaleInvalidation(self):
     data = getData('image.gif')
     folder = self.folder
     image = folder[folder.invokeFactory('Image', id='foo', image=data)]
     # first view the thumbnail of the original image
     traverse = folder.REQUEST.traverseName
     thumb1 = traverse(image, 'image_thumb')
     # now upload a new one and make sure the thumbnail has changed
     image.update(image=getData('image.jpg'))
     traverse = folder.REQUEST.traverseName
     thumb2 = traverse(image, 'image_thumb')
     self.failIf(thumb1.data == thumb2.data, 'thumb not updated?')
 def testEditTranslatedBlobelFish(self):
     guide = getData('plone.pdf')
     fish = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     fish.update(title='Me fish.', guide=guide, language='en')
     # add a translation and then upload a new file...
     fisch = fish.addTranslation('de', title='Ich Fisch.')
     blob = fish.getGuide().getBlob()
     test = getData('test.pdf')
     fish.update(guide=makeFileUpload(test, 'test.pdf'))
     self.assertNotEqual(fish.getGuide().getBlob(), blob)
     self.assertEqual(fish.getGuide().getBlob(), fisch.getGuide().getBlob())
     self.assertEqual(str(fish.getGuide()), test)
     self.assertEqual(str(fisch.getGuide()), test)
Esempio n. 3
0
 def testEditTranslatedBlobelFish(self):
     guide = getData('plone.pdf')
     fish = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     fish.update(title='Me fish.', guide=guide, language='en')
     # add a translation and then upload a new file...
     fisch = fish.addTranslation('de', title='Ich Fisch.')
     blob = fish.getGuide().getBlob()
     test = getData('test.pdf')
     fish.update(guide=makeFileUpload(test, 'test.pdf'))
     self.assertNotEqual(fish.getGuide().getBlob(), blob)
     self.assertEqual(fish.getGuide().getBlob(), fisch.getGuide().getBlob())
     self.assertEqual(str(fish.getGuide()), test)
     self.assertEqual(str(fisch.getGuide()), test)
 def testGSContentCompatible(self):
     foo = self.folder[self.folder.invokeFactory('File',
                                                 'foo',
                                                 title='foo',
                                                 file=getData('plone.pdf'))]
     self.assertTrue(IFilesystemExporter(foo))
     self.assertTrue(IFilesystemImporter(foo))
Esempio n. 5
0
 def testSearchableText(self):
     foo = self.folder[self.folder.invokeFactory('File', 'foo',
         title='foo', file=getData('plone.pdf'))]
     data = foo.SearchableText()
     self.assertTrue('foo' in data)
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
Esempio n. 6
0
 def testCustomSizes(self):
     data = getData('image.gif')
     folder = self.folder
     image = folder[folder.invokeFactory('Image', id='foo', image=data)]
     # set custom image sizes
     iprops = self.portal.portal_properties.imaging_properties
     iprops.manage_changeProperties(allowed_sizes=['foo 23:23', '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[:4], '\x89PNG')
     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[:4], '\x89PNG')
     self.assertEqual(bar.width, 6)
     self.assertEqual(bar.height, 6)
     # make sure the traversal adapter was call in fact
     self.assertEqual(self.counter, 2)
Esempio n. 7
0
 def testSearchableText(self):
     foo = self.folder[self.folder.invokeFactory('File', 'foo',
         title='foo', file=getData('plone.pdf'))]
     data = foo.SearchableText()
     self.assertTrue('foo' in data)
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
Esempio n. 8
0
 def testBlobPath(self):
     foo = self.folder[self.folder.invokeFactory('File', 'foo',
         title='foo', file=getData('plone.pdf'))]
     field = foo.getField('file')
     blobfile = field.get(foo).blob._p_blob_committed
     tempdir = self.app._p_jar._storage.temporaryDirectory()
     self.assertTrue(blobfile.endswith(SAVEPOINT_SUFFIX))
     self.assertTrue(blobfile.startswith(tempdir))
Esempio n. 9
0
 def testBlobPath(self):
     foo = self.folder[self.folder.invokeFactory('File', 'foo',
         title='foo', file=getData('plone.pdf'))]
     field = foo.getField('file')
     blobfile = field.get(foo).blob._p_blob_committed
     tempdir = self.app._p_jar._storage.temporaryDirectory()
     self.assertTrue(blobfile.endswith(SAVEPOINT_SUFFIX))
     self.assertTrue(blobfile.startswith(tempdir))
Esempio n. 10
0
 def testSearchableText(self):
     blob = self.folder[self.folder.invokeFactory('Blob', 'blob',
         title='foo', file=getData('plone.pdf'))]
     data = blob.SearchableText()
     self.failUnless('blob' in data)
     self.failUnless('foo' in data)
     self.failUnless('Plone' in data, 'pdftohtml not installed?')
     self.failIf('PDF' in data)
Esempio n. 11
0
 def afterSetUp(self):
     data = getData('image.gif')
     folder = self.folder
     self.image = folder[folder.invokeFactory('Image', id='foo', image=data)]
     self.field = self.image.getField('image')
     self.handler = BlobImageScaleHandler(self.field)
     iprops = self.portal.portal_properties.imaging_properties
     iprops.manage_changeProperties(allowed_sizes=['foo 60:60'])
Esempio n. 12
0
 def testIndexAccessor(self):
     foo = self.folder[self.folder.invokeFactory('File', 'foo',
         title='foo', file=getData('plone.pdf'))]
     field = foo.getField('file')
     accessor = field.getIndexAccessor(foo)
     self.assertEqual(field.index_method, accessor.func_name)
     data = accessor()
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
Esempio n. 13
0
 def testIndexAccessor(self):
     blob = self.folder[self.folder.invokeFactory('Blob', 'blob',
         title='foo', file=getData('plone.pdf'))]
     field = blob.getField('file')
     accessor = field.getIndexAccessor(blob)
     self.assertEqual(field.index_method, accessor.func_name)
     data = accessor()
     self.failUnless('Plone' in data, 'pdftohtml not installed?')
     self.failIf('PDF' in data)
Esempio n. 14
0
 def testScaleInvalidation(self):
     image = self.folder['foo-image']
     # first view the thumbnail of the original image
     traverse = self.layer['request'].traverseName
     thumb1 = traverse(image, 'image_thumb')
     # now upload a new one and make sure the thumbnail has changed
     image.update(image=getData('image.jpg'))
     thumb2 = traverse(image, 'image_thumb')
     self.assertFalse(thumb1.data == thumb2.data, 'thumb not updated?')
Esempio n. 15
0
 def testScaleInvalidation(self):
     image = self.folder['foo-image']
     # first view the thumbnail of the original image
     traverse = self.layer['request'].traverseName
     thumb1 = traverse(image, 'image_thumb')
     # now upload a new one and make sure the thumbnail has changed
     image.update(image=getData('image.jpg'))
     thumb2 = traverse(image, 'image_thumb')
     self.assertFalse(thumb1.data == thumb2.data, 'thumb not updated?')
Esempio n. 16
0
 def testSearchableText(self):
     blob = self.folder['blob']
     blob.setTitle('foo')
     blob.setFile(getData('plone.pdf'))
     data = blob.SearchableText()
     self.assertTrue('blob' in data)
     self.assertTrue('foo' in data)
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
Esempio n. 17
0
 def testIndexAccessor(self):
     foo = self.folder[self.folder.invokeFactory('File', 'foo',
         title='foo', file=getData('plone.pdf'))]
     field = foo.getField('file')
     accessor = field.getIndexAccessor(foo)
     self.assertEqual(field.index_method, accessor.func_name)
     data = accessor()
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
 def testSearchableText(self):
     blob = self.folder['blob']
     blob.setTitle('foo')
     blob.setFile(getData('plone.pdf'))
     data = blob.SearchableText()
     self.assertTrue('blob' in data)
     self.assertTrue('foo' in data)
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
Esempio n. 19
0
 def testIndexAccessor(self):
     blob = self.folder['blob']
     blob.setTitle('foo')
     blob.setFile(getData('plone.pdf'))
     field = blob.getField('file')
     accessor = field.getIndexAccessor(blob)
     self.assertEqual(field.index_method, accessor.func_name)
     data = accessor()
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
 def testCreateBlobelFish(self):
     guide = getData('plone.pdf')
     foo = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     foo.update(title='Me fish.', guide=guide, language='en')
     # check content item
     self.assertEqual(foo.Title(), 'Me fish.')
     self.assertEqual(foo.Language(), 'en')
     self.assertEqual(foo.getPortalTypeName(), 'BlobelFish')
     self.assertEqual(foo.getContentType(), 'application/pdf')
     self.assertEqual(str(foo.getGuide()), guide)
 def testIndexAccessor(self):
     blob = self.folder['blob']
     blob.setTitle('foo')
     blob.setFile(getData('plone.pdf'))
     field = blob.getField('file')
     accessor = field.getIndexAccessor(blob)
     self.assertEqual(field.index_method, accessor.func_name)
     data = accessor()
     self.assertTrue('Plone' in data, 'pdftohtml not installed?')
     self.assertFalse('PDF' in data)
Esempio n. 22
0
 def testCreateBlobelFish(self):
     guide = getData('plone.pdf')
     foo = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     foo.update(title='Me fish.', guide=guide, language='en')
     # check content item
     self.assertEqual(foo.Title(), 'Me fish.')
     self.assertEqual(foo.Language(), 'en')
     self.assertEqual(foo.getPortalTypeName(), 'BlobelFish')
     self.assertEqual(foo.getContentType(), 'application/pdf')
     self.assertEqual(str(foo.getGuide()), guide)
Esempio n. 23
0
 def testScalingViaBlobAdapter(self):
     # make sure `getScale` of the blob-specific scale handler is called
     self.counter = 0
     data = getData('image.gif')
     # make sure traversing works as expected
     base = '/'.join(self.folder.getPhysicalPath())
     credentials = self.getCredentials()
     response = self.publish(base + '/foo-image/image', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody(), data)
     self.assertEqual(self.counter, 1)
Esempio n. 24
0
 def testScalingViaBlobAdapter(self):
     # make sure `getScale` of the blob-specific scale handler is called
     self.counter = 0
     data = getData('image.gif')
     # make sure traversing works as expected
     base = '/'.join(self.folder.getPhysicalPath())
     credentials = self.getCredentials()
     response = self.publish(base + '/foo-image/image', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody(), data)
     self.assertEqual(self.counter, 1)
Esempio n. 25
0
 def testGSContentCompatible(self):
     foo = self.folder[
         self.folder.invokeFactory(
             'File',
             'foo',
             title='foo',
             file=getData('plone.pdf')
         )
     ]
     self.assertTrue(IFilesystemExporter(foo))
     self.assertTrue(IFilesystemImporter(foo))
 def testCreateAndRemoveTranslatedBlobelFish(self):
     guide = getData('plone.pdf')
     fish = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     fish.update(title='Me fish.', guide=guide, language='en')
     # add a translation, after which both should use the same blob...
     fisch = fish.addTranslation('de', title='Ich Fisch.')
     self.assertEqual(fish.getGuide().getBlob(), fisch.getGuide().getBlob())
     self.assertEqual(getattr(self.folder, 'flobby-de'), fisch)
     # now let's remove it again and make sure the blob's still okay...
     fish.removeTranslation('de')
     self.assertRaises(AttributeError, getattr, self.folder, 'flobby-de')
     self.assertEqual(str(fish.getGuide()), guide)
Esempio n. 27
0
 def testCreateAndRemoveTranslatedBlobelFish(self):
     guide = getData('plone.pdf')
     fish = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     fish.update(title='Me fish.', guide=guide, language='en')
     # add a translation, after which both should use the same blob...
     fisch = fish.addTranslation('de', title='Ich Fisch.')
     self.assertEqual(fish.getGuide().getBlob(), fisch.getGuide().getBlob())
     self.assertEqual(getattr(self.folder, 'flobby-de'), fisch)
     # now let's remove it again and make sure the blob's still okay...
     fish.removeTranslation('de')
     self.assertRaises(AttributeError, getattr, self.folder, 'flobby-de')
     self.assertEqual(str(fish.getGuide()), guide)
Esempio n. 28
0
 def testOutsideRange(self):
     # ranges outside the file size also have to work
     blob = self.folder['blob']
     blob.setTitle('foo')
     blob.setFile(getData('plone.pdf'))
     data = blob.getFile().getBlob().open('r').read()
     l = len(data)
     request = self.folder.REQUEST
     request.environ['HTTP_RANGE'] = 'bytes={}-{}'.format(l * 2, l * 3)
     iterator = blob.download(request)
     self.assertEqual(data, ''.join(iterator))
     request.environ['HTTP_RANGE'] = 'bytes={}-'.format(l * 2)
     iterator = blob.download(request)
     self.assertEqual(data, ''.join(iterator))
Esempio n. 29
0
 def testCreateTranslatedBlobelFish(self):
     guide = getData('plone.pdf')
     fish = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     fish.update(title='Me fish.', guide=guide, language='en')
     # add a translation and check it
     fisch = fish.addTranslation('de', title='Ich Fisch.')
     self.assertEqual(fisch.Title(), 'Ich Fisch.')
     self.assertEqual(fisch.Language(), 'de')
     self.assertEqual(fisch.getPortalTypeName(), 'BlobelFish')
     self.assertEqual(fisch.getContentType(), 'application/pdf')
     self.assertEqual(str(fisch.getGuide()), guide)
     # as the field is language-independent both translations should
     # be using the same blob...
     self.assertEqual(fish.getGuide().getBlob(), fisch.getGuide().getBlob())
 def testCreateTranslatedBlobelFish(self):
     guide = getData('plone.pdf')
     fish = self.folder[self.folder.invokeFactory('BlobelFish', 'flobby')]
     fish.update(title='Me fish.', guide=guide, language='en')
     # add a translation and check it
     fisch = fish.addTranslation('de', title='Ich Fisch.')
     self.assertEqual(fisch.Title(), 'Ich Fisch.')
     self.assertEqual(fisch.Language(), 'de')
     self.assertEqual(fisch.getPortalTypeName(), 'BlobelFish')
     self.assertEqual(fisch.getContentType(), 'application/pdf')
     self.assertEqual(str(fisch.getGuide()), guide)
     # as the field is language-independent both translations should
     # be using the same blob...
     self.assertEqual(fish.getGuide().getBlob(), fisch.getGuide().getBlob())
 def testOutsideRange(self):
     # ranges outside the file size also have to work
     blob = self.folder['blob']
     blob.setTitle('foo')
     blob.setFile(getData('plone.pdf'))
     data = blob.getFile().getBlob().open('r').read()
     l = len(data)
     request = self.folder.REQUEST
     request.environ['HTTP_RANGE'] = 'bytes={}-{}'.format(l * 2, l * 3)
     iterator = blob.download(request)
     self.assertEqual(data, ''.join(iterator))
     request.environ['HTTP_RANGE'] = 'bytes={}-'.format(l * 2)
     iterator = blob.download(request)
     self.assertEqual(data, ''.join(iterator))
Esempio n. 32
0
    def setUpPloneSite(self, portal):
        for name in ['file', 'image']:
            self.applyProfile(portal, 'plone.app.blob:%s-replacement' % name)
        # allow creating the replaced types
        types = getToolByName(portal, 'portal_types')
        assert types.getTypeInfo('Blob').product == 'plone.app.blob'
        types.getTypeInfo('ATFile').global_allow = True
        types.getTypeInfo('ATImage').global_allow = True

        testing.setRoles(portal, testing.TEST_USER_ID, ['Manager'])
        folder = portal.portal_membership.getHomeFolder(testing.TEST_USER_ID)

        image = StringIO(getData('image.gif'))
        image.filename = 'original.gif'
        folder.invokeFactory('Image', id='foo-image', title='an image', image=image)
Esempio n. 33
0
 def testPublishCustomSize(self):
     data = getData('image.gif')
     self.folder.invokeFactory('Image', id='foo', image=data)
     # set custom image sizes
     iprops = self.portal.portal_properties.imaging_properties
     iprops.manage_changeProperties(allowed_sizes=['foo 23:23'])
     # make sure traversing works as expected
     base = '/'.join(self.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)
Esempio n. 34
0
 def testBlobCreation(self):
     data = getData('image.gif')
     folder = self.folder
     image = folder[folder.invokeFactory('Image', id='foo', image=data)]
     # make sure the scaled version is actually stored in a blob; we
     # also count invocations of `createScale`, which should be 0 still
     self.assertEqual(self.counter, 0)
     traverse = folder.REQUEST.traverseName
     thumb = traverse(image, 'image_thumb')
     blob = getattr(image, blobScalesAttr)['image']['thumb']['blob']
     self.failUnless(isinstance(blob, Blob), 'no blob?')
     self.assertEqual(blob.open('r').read(), thumb.data)
     self.assertEqual(self.counter, 1)
     # the scale was created, now let's access it a few more times
     thumb = traverse(image, 'image_thumb')
     thumb = traverse(image, 'image_thumb')
     self.assertEqual(self.counter, 1)
Esempio n. 35
0
    def setUpPloneSite(self, portal):
        for name in ['file', 'image']:
            self.applyProfile(portal, 'plone.app.blob:%s-replacement' % name)
        # allow creating the replaced types
        types = getToolByName(portal, 'portal_types')
        assert types.getTypeInfo('Blob').product == 'plone.app.blob'
        types.getTypeInfo('ATFile').global_allow = True
        types.getTypeInfo('ATImage').global_allow = True

        testing.setRoles(portal, testing.TEST_USER_ID, ['Manager'])
        folder = portal.portal_membership.getHomeFolder(testing.TEST_USER_ID)

        image = StringIO(getData('image.gif'))
        image.filename = 'original.gif'
        folder.invokeFactory('Image',
                             id='foo-image',
                             title='an image',
                             image=image)
Esempio n. 36
0
 def testScalingViaBlobAdapter(self):
     # make sure `getScale` of the blob-specific scale handler is called
     self.counter = 0
     original = BlobImageScaleHandler.getScale
     def getScale(adapter, instance, scale):
         self.counter += 1
         return original(adapter, instance, scale)
     BlobImageScaleHandler.getScale = getScale
     data = getData('image.gif')
     self.folder.invokeFactory('Image', id='foo', image=data)
     # make sure traversing works as expected
     base = '/'.join(self.folder.getPhysicalPath())
     credentials = self.getCredentials()
     response = self.publish(base + '/foo/image', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody(), data)
     # undo the evil monkey patching...
     BlobImageScaleHandler.getScale = original
     # and make sure the traversal adapter was call in fact
     self.assertEqual(self.counter, 1)
Esempio n. 37
0
 def testRangeSupport(self):
     blob = self.folder[self.folder.invokeFactory('Blob', 'blob',
         title='foo', file=getData('plone.pdf'))]
     data = blob.getFile().getBlob().open('r').read()
     request = self.folder.REQUEST
     request.environ['HTTP_RANGE'] = 'bytes=2-10'
     iterator = blob.download(request)
     self.assertEqual(data[2:10+1], iterator.next())
     # ranges should also work with multiple chunks read from the blob
     request.environ['HTTP_RANGE'] = 'bytes=2-10'
     iterator = blob.download(request)
     iterator.streamsize = 5
     self.assertEqual(data[2:2+5], iterator.next())
     self.assertEqual(data[2+5:10+1], iterator.next())
     # open and suffix ranges also have to work
     request.environ['HTTP_RANGE'] = 'bytes=2-'
     iterator = blob.download(request)
     self.assertEqual(data[2:], ''.join(iterator))
     request.environ['HTTP_RANGE'] = 'bytes=-20'
     iterator = blob.download(request)
     self.assertEqual(data[-20:], ''.join(iterator))
Esempio n. 38
0
 def testImageThumb(self):
     data = getData('image.gif')
     image = self.folder['foo-image']
     # make sure traversing works as is and with scaling
     traverse = self.layer['request'].traverseName
     self.assertEqual(traverse(image, 'image').data, data)
     sizes = image.getField('image').getAvailableSizes(image)
     self.assertTrue('thumb' in sizes.keys())
     thumb = traverse(image, 'image_thumb')
     self.assertEqual(thumb.getContentType(), 'image/gif')
     self.assertEqual(thumb.data[:6], 'GIF87a')
     width, height = sizes['thumb']
     self.assertEqual(thumb.width, width)
     self.assertEqual(thumb.height, height)
     # also check the generated tag
     url = image.absolute_url() + '/image_thumb'
     tag = '<img src="%s" alt="an image" title="an image" height="%d" width="%d" />'
     self.assertEqual(thumb.tag(), tag % (url, height, width))
     # calling str(...) on the scale should return the tag
     self.assertEqual(str(thumb), thumb.tag())
     # make sure the traversal adapter was call in fact
     self.assertEqual(self.counter, 2)
 def testRangeSupport(self):
     blob = self.folder['blob']
     blob.setTitle('foo')
     blob.setFile(getData('plone.pdf'))
     data = blob.getFile().getBlob().open('r').read()
     request = self.folder.REQUEST
     request.environ['HTTP_RANGE'] = 'bytes=2-10'
     iterator = blob.download(request)
     self.assertEqual(data[2:10 + 1], iterator.next())
     # ranges should also work with multiple chunks read from the blob
     request.environ['HTTP_RANGE'] = 'bytes=2-10'
     iterator = blob.download(request)
     iterator.streamsize = 5
     self.assertEqual(data[2:2 + 5], iterator.next())
     self.assertEqual(data[2 + 5:10 + 1], iterator.next())
     # open and suffix ranges also have to work
     request.environ['HTTP_RANGE'] = 'bytes=2-'
     iterator = blob.download(request)
     self.assertEqual(data[2:], ''.join(iterator))
     request.environ['HTTP_RANGE'] = 'bytes=-20'
     iterator = blob.download(request)
     self.assertEqual(data[-20:], ''.join(iterator))
Esempio n. 40
0
 def testPublishThumb(self):
     data = getData('image.gif')
     # make sure traversing works as is and with scaling
     base = '/'.join(self.folder.getPhysicalPath())
     credentials = self.getCredentials()
     # first the image itself...
     response = self.publish(base + '/foo-image', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody(), data)
     self.assertEqual(response.getHeader('Content-Type'), 'image/gif')
     # then the field without a scale name
     response = self.publish(base + '/foo-image/image', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody(), data)
     self.assertEqual(response.getHeader('Content-Type'), 'image/gif')
     # and last a scaled version
     response = self.publish(base + '/foo-image/image_thumb', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody()[:6], 'GIF87a')
     self.assertEqual(response.getHeader('Content-Type'), 'image/gif')
     # make sure the traversal adapter was call in fact
     self.assertEqual(self.counter, 9)
Esempio n. 41
0
 def testCustomSizeChange(self):
     data = getData('image.gif')
     folder = self.folder
     image = folder[folder.invokeFactory('Image', id='foo', image=data)]
     # set custom image sizes & view a scale
     iprops = self.portal.portal_properties.imaging_properties
     iprops.manage_changeProperties(allowed_sizes=['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...
     iprops.manage_changeProperties(allowed_sizes=['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)
Esempio n. 42
0
 def testImageThumb(self):
     data = getData('image.gif')
     image = self.folder['foo-image']
     # make sure traversing works as is and with scaling
     traverse = self.layer['request'].traverseName
     self.assertEqual(traverse(image, 'image').data, data)
     sizes = image.getField('image').getAvailableSizes(image)
     self.assertTrue('thumb' in sizes.keys())
     thumb = traverse(image, 'image_thumb')
     self.assertEqual(thumb.getContentType(), 'image/gif')
     self.assertEqual(thumb.data[:6], 'GIF87a')
     width, height = sizes['thumb']
     self.assertEqual(thumb.width, width)
     self.assertEqual(thumb.height, height)
     # also check the generated tag
     url = image.absolute_url() + '/image_thumb'
     tag = '<img src="{0}" alt="an image" title="an image" height="{1}" width="{2}" />'  # noqa
     self.assertEqual(thumb.tag(), tag.format(url, height, width))
     # calling str(...) on the scale should return the tag
     self.assertEqual(str(thumb), thumb.tag())
     # make sure the traversal adapter was call in fact
     self.assertEqual(self.counter, 2)
Esempio n. 43
0
 def testImageThumb(self):
     data = getData('image.gif')
     folder = self.folder
     image = folder[folder.invokeFactory('Image', id='foo', image=data)]
     # make sure traversing works as is and with scaling
     traverse = folder.REQUEST.traverseName
     self.assertEqual(traverse(image, 'image').data, data)
     sizes = image.getField('image').getAvailableSizes(image)
     self.failUnless('thumb' in sizes.keys())
     thumb = traverse(image, 'image_thumb')
     self.assertEqual(thumb.getContentType(), 'image/png')
     self.assertEqual(thumb.data[:4], '\x89PNG')
     width, height = sizes['thumb']
     self.assertEqual(thumb.width, width)
     self.assertEqual(thumb.height, height)
     # also check the generated tag
     url = image.absolute_url() + '/image_thumb'
     tag = '<img src="%s" alt="foo" title="foo" height="%d" width="%d" />'
     self.assertEqual(thumb.tag(), tag % (url, height, width))
     # calling str(...) on the scale should return the tag
     self.assertEqual(str(thumb), thumb.tag())
     # make sure the traversal adapter was call in fact
     self.assertEqual(self.counter, 2)
Esempio n. 44
0
 def testPublishThumb(self):
     data = getData('image.gif')
     # make sure traversing works as is and with scaling
     base = '/'.join(self.folder.getPhysicalPath())
     credentials = self.getCredentials()
     # first the image itself...
     response = self.publish(base + '/foo-image', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody(), data)
     self.assertEqual(response.getHeader('Content-Type'), 'image/gif')
     # then the field without a scale name
     response = self.publish(base + '/foo-image/image', basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody(), data)
     self.assertEqual(response.getHeader('Content-Type'), 'image/gif')
     # and last a scaled version
     response = self.publish(base + '/foo-image/image_thumb',
                             basic=credentials)
     self.assertEqual(response.getStatus(), 200)
     self.assertEqual(response.getBody()[:6], 'GIF87a')
     self.assertEqual(response.getHeader('Content-Type'), 'image/gif')
     # make sure the traversal adapter was call in fact
     self.assertEqual(self.counter, 9)