From 53b92f3f0f9198336b0bf3182ecb2f34e46a588f Mon Sep 17 00:00:00 2001 From: Brent O'Connor Date: Wed, 29 Mar 2017 20:43:55 -0500 Subject: [PATCH] Fixed a ValueError that happened when trying to save a Category that has a thumbnail --- categories/models.py | 8 ++------ categories/tests/test_image.jpg | Bin 0 -> 9554 bytes categories/tests/test_models.py | 21 +++++++++++++++++++++ tox.ini | 2 ++ 4 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 categories/tests/test_image.jpg create mode 100644 categories/tests/test_models.py diff --git a/categories/models.py b/categories/models.py index 3c16ca2..2585364 100644 --- a/categories/models.py +++ b/categories/models.py @@ -1,3 +1,4 @@ +from django.core.files.images import get_image_dimensions from django.core.urlresolvers import reverse from django.db import models from django.utils.encoding import force_text @@ -81,12 +82,7 @@ class Category(CategoryBase): def save(self, *args, **kwargs): if self.thumbnail: - from django.core.files.images import get_image_dimensions - import django - if django.VERSION[1] < 2: - width, height = get_image_dimensions(self.thumbnail.file) - else: - width, height = get_image_dimensions(self.thumbnail.file, close=True) + width, height = get_image_dimensions(self.thumbnail.file) else: width, height = None, None diff --git a/categories/tests/test_image.jpg b/categories/tests/test_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65fb511111595d279e6f82211736df127219d8b2 GIT binary patch literal 9554 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 literal 0 HcmV?d00001 diff --git a/categories/tests/test_models.py b/categories/tests/test_models.py new file mode 100644 index 0000000..5649bee --- /dev/null +++ b/categories/tests/test_models.py @@ -0,0 +1,21 @@ +import os + +from django.core.files import File +from django.core.files.uploadedfile import UploadedFile + +from categories.models import Category +from django.test import TestCase + + +class TestCategoryThumbnail(TestCase): + + def test_thumbnail(self): + + file_name = 'test_image.jpg' + + with open(os.path.join(os.path.dirname(__file__), file_name), 'rb') as f: + test_image = UploadedFile(File(f), content_type='image/jpeg') + category = Category.objects.create(name='Test Category', slug='test-category', thumbnail=test_image) + self.assertEqual(category.pk, 1) + self.assertEqual(category.thumbnail_width, 640) + self.assertEqual(category.thumbnail_height, 480) diff --git a/tox.ini b/tox.ini index 7444ae3..ed3e9af 100644 --- a/tox.ini +++ b/tox.ini @@ -11,6 +11,8 @@ deps= django19: Django==1.9.2 django18: Django==1.8.9 coverage==4.0.3 + pillow + ipdb -r{toxinidir}/requirements.txt commands=