Skip to content

Commit

Permalink
Merge a8cfeec into 03bb5e8
Browse files Browse the repository at this point in the history
  • Loading branch information
cekk committed Dec 26, 2014
2 parents 03bb5e8 + a8cfeec commit 89c4b21
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ matrix:
- python: 2.6
env: PLONE_VERSION=4.1
install:
- sed -ie "s#test-4.3.x#test-$PLONE_VERSION.x.cfg#" buildout.cfg
- sed -ie "s#test-4.3.x#test-$PLONE_VERSION.x#" buildout.cfg
- mkdir -p buildout-cache/downloads
- python bootstrap.py -c travis.cfg -v 2.2.1
- bin/buildout -c travis.cfg annotate
Expand Down
4 changes: 4 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ Changelog
- Add exception handling also for TypeError in get_content_image method
[cekk]

- Fixed a problem with images loaded in news. If the image isn't a jpg,
the `get_content_image` method can't get image size and returns nothing.
This avoid some strange things, like MemoryError with Pillow.
[cekk]

2.0rc1 (2014-10-14)
^^^^^^^^^^^^^^^^^^
Expand Down
4 changes: 2 additions & 2 deletions sc/social/like/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import random


def generate_image(width, height):
def generate_image(width, height, format="PNG"):
# Mandelbrot fractal
# FB - 201003254
# drawing area
Expand Down Expand Up @@ -37,7 +37,7 @@ def generate_image(width, height):
image.putpixel((x, y), b * 65536 + g * 256 + r)

output = StringIO()
image.save(output, format="PNG")
image.save(output, format=format)
return output.getvalue()


Expand Down
41 changes: 41 additions & 0 deletions sc/social/like/tests/test_plugin_facebook.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,18 @@ def setUp(self):
def setup_content(self, portal):
portal.invokeFactory('Document', 'my-document')
portal.invokeFactory('News Item', 'my-newsitem')
portal.invokeFactory('News Item', 'my-newsitem-bmp')
portal.invokeFactory('Image', 'my-image')
portal.invokeFactory('Image', 'my-image-bmp')
self.document = portal['my-document']
self.newsitem = portal['my-newsitem']
self.newsitem.setImage(generate_image(1024, 768))
self.newsitem_bmp = portal['my-newsitem-bmp']
self.newsitem_bmp.setImage(generate_image(1024, 768, format="BMP"))
self.image = portal['my-image']
self.image.setImage(generate_image(1024, 768))
self.image_bmp = portal['my-image-bmp']
self.image_bmp.setImage(generate_image(1024, 768, format="BMP"))

def test_config_view(self):
plugin = self.plugin
Expand Down Expand Up @@ -163,6 +169,28 @@ def test_plugin_view_image(self):
self.assertEqual(view.image_width(), 1200)
self.assertEqual(view.image_height(), 675)

def test_plugin_view_image_bmp(self):
plugin = self.plugin
image = self.image_bmp

plugin_view = plugin.view()
view = image.restrictedTraverse(plugin_view)

# At image, use local image
image_url = view.image_url()
self.assertTrue('logo.png' not in image_url)
self.assertEqual(view.image_width(), 1024)
self.assertEqual(view.image_height(), 768)

# Set a larger image
image.setImage(generate_image(1920, 1080))

plugin_view = plugin.view()
view = image.restrictedTraverse(plugin_view)

self.assertEqual(view.image_width(), 1200)
self.assertEqual(view.image_height(), 675)

def test_plugin_view_image_large(self):
plugin = self.plugin
image = self.image
Expand Down Expand Up @@ -191,6 +219,19 @@ def test_plugin_view_newsitem(self):
self.assertEqual(view.image_width(), 1024)
self.assertEqual(view.image_height(), 768)

def test_plugin_view_newsitem_bmp(self):
plugin = self.plugin
newsitem = self.newsitem_bmp

plugin_view = plugin.view()
view = newsitem.restrictedTraverse(plugin_view)
# At newsitem, use image
self.assertEqual(view.image, None)
image_url = view.image_url()
self.assertTrue('logo.png' in image_url)
self.assertEqual(view.image_width(), None)
self.assertEqual(view.image_height(), None)

def test_plugin_view_newsitem_large(self):
plugin = self.plugin
newsitem = self.newsitem
Expand Down
4 changes: 4 additions & 0 deletions sc/social/like/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ def get_content_image(context,
sizes = view.getImageSize(field)
except AttributeError:
sizes = img = None
if sizes == (0, 0) or sizes == ('', ''):
# this avoid strange cases where we can't get size infos.
# for example if the loaded image in a news is a bmp or a tiff
return None
if sizes:
kwargs = {}
if not (width or height):
Expand Down

0 comments on commit 89c4b21

Please sign in to comment.