From 4b4efa865db87d052d07a778d56ca1b13feba9e2 Mon Sep 17 00:00:00 2001 From: Hyunwoo Park Date: Wed, 17 Oct 2018 03:12:25 +0900 Subject: [PATCH] Fix _size problem for latest Django (#129) --- markdownx/forms.py | 4 +-- .../tests/static/django-markdownx-preview.png | Bin 0 -> 5161 bytes markdownx/tests/tests.py | 27 ++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 markdownx/tests/static/django-markdownx-preview.png diff --git a/markdownx/forms.py b/markdownx/forms.py index 1905efd..c52e90d 100755 --- a/markdownx/forms.py +++ b/markdownx/forms.py @@ -54,7 +54,7 @@ class ImageForm(forms.Form): content_type = image.content_type file_name = image.name image_extension = content_type.split('/')[-1].upper() - image_size = getattr(image, '_size') + image_size = image.size if content_type.lower() != self._SVG_TYPE: # Processing the raster graphic image. @@ -176,7 +176,7 @@ class ImageForm(forms.Form): raise MarkdownxImageUploadError.not_uploaded() content_type = upload.content_type - file_size = getattr(upload, '_size') + file_size = upload.size if content_type not in MARKDOWNX_UPLOAD_CONTENT_TYPES: diff --git a/markdownx/tests/static/django-markdownx-preview.png b/markdownx/tests/static/django-markdownx-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..769556b78042461083c3928f9b369efb6d033ea3 GIT binary patch literal 5161 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 literal 0 HcmV?d00001 diff --git a/markdownx/tests/tests.py b/markdownx/tests/tests.py index 63e2174..2b0345c 100644 --- a/markdownx/tests/tests.py +++ b/markdownx/tests/tests.py @@ -1,4 +1,10 @@ +import os +import re from django.test import TestCase +try: + from django.urls import reverse +except ImportError: # Djanago < 2.0 + from django.core.urlresolvers import reverse class SimpleTest(TestCase): @@ -6,3 +12,24 @@ class SimpleTest(TestCase): def test_me(self): response = self.client.get('/testview/') self.assertEqual(response.status_code, 200) + + def test_upload(self): + url = reverse('markdownx_upload') + with open('markdownx/tests/static/django-markdownx-preview.png', 'rb') as fp: + response = self.client.post(url, {'image': fp}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + + try: + json = response.json() + except AttributeError: # Django < 1.9 + import json + json = json.loads(response.content.decode('utf-8')) + + self.assertEqual(response.status_code, 200) + self.assertIn('image_code', json) + + match = re.findall(r'(markdownx/[\w\-]+\.png)', json['image_code']) + try: + if match: + os.remove(match[0]) + except OSError: + pass