summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Kaplan-Moss <jacob@jacobian.org>2009-05-08 17:22:34 +0000
committerJacob Kaplan-Moss <jacob@jacobian.org>2009-05-08 17:22:34 +0000
commitc40f715257b6268cfd96dbafa18e58cbc6602afa (patch)
treece112a7b947ce6794d0fccf0e43ae5d37c4f1768
parent88f5167142f547cbb7b77432803e69a4302d15fe (diff)
Fixed #10687: fixed request parsing when upload_handlers is empty. Thanks, Armin Ronacher.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10723 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/files/base.py1
-rw-r--r--django/http/multipartparser.py3
-rw-r--r--tests/regressiontests/file_uploads/tests.py12
3 files changed, 14 insertions, 2 deletions
diff --git a/django/core/files/base.py b/django/core/files/base.py
index 9013acf2cc..f9e1c9a0d7 100644
--- a/django/core/files/base.py
+++ b/django/core/files/base.py
@@ -1,5 +1,4 @@
import os
-
try:
from cStringIO import StringIO
except ImportError:
diff --git a/django/http/multipartparser.py b/django/http/multipartparser.py
index 048c9aaea2..e45d5d1035 100644
--- a/django/http/multipartparser.py
+++ b/django/http/multipartparser.py
@@ -84,7 +84,8 @@ class MultiPartParser(object):
# For compatibility with low-level network APIs (with 32-bit integers),
# the chunk size should be < 2^31, but still divisible by 4.
- self._chunk_size = min(2**31-4, *[x.chunk_size for x in upload_handlers if x.chunk_size])
+ possible_sizes = [x.chunk_size for x in upload_handlers if x.chunk_size]
+ self._chunk_size = min([2**31-4] + possible_sizes)
self._meta = META
self._encoding = encoding or settings.DEFAULT_CHARSET
diff --git a/tests/regressiontests/file_uploads/tests.py b/tests/regressiontests/file_uploads/tests.py
index 639ee84cd2..1395cb23ea 100644
--- a/tests/regressiontests/file_uploads/tests.py
+++ b/tests/regressiontests/file_uploads/tests.py
@@ -3,12 +3,14 @@ import os
import errno
import shutil
import unittest
+from StringIO import StringIO
from django.core.files import temp as tempfile
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase, client
from django.utils import simplejson
from django.utils.hashcompat import sha_constructor
+from django.http.multipartparser import MultiPartParser
from models import FileModel, temp_storage, UPLOAD_TO
import uploadhandler
@@ -290,3 +292,13 @@ class DirectoryCreationTests(unittest.TestCase):
"%s exists and is not a directory." % UPLOAD_TO)
except:
self.fail("IOError not raised")
+
+class MultiParserTests(unittest.TestCase):
+
+ def test_empty_upload_handlers(self):
+ # We're not actually parsing here; just checking if the parser properly
+ # instantiates with empty upload handlers.
+ parser = MultiPartParser({
+ 'CONTENT_TYPE': 'multipart/form-data; boundary=_foo',
+ 'CONTENT_LENGTH': '1'
+ }, StringIO('x'), [], 'utf-8')