return 400 BAD REQUEST rather than Django traceback/500 error on failed multipart parse

This commit is contained in:
Andrew Straw 2011-06-29 23:02:00 +02:00
parent d714901a60
commit f6e4578656

View File

@ -13,6 +13,7 @@ We need a method to be able to:
from django.http import QueryDict from django.http import QueryDict
from django.http.multipartparser import MultiPartParser as DjangoMultiPartParser from django.http.multipartparser import MultiPartParser as DjangoMultiPartParser
from django.http.multipartparser import MultiPartParserError
from django.utils import simplejson as json from django.utils import simplejson as json
from djangorestframework import status from djangorestframework import status
from djangorestframework.response import ErrorResponse from djangorestframework.response import ErrorResponse
@ -135,6 +136,10 @@ class MultiPartParser(BaseParser):
`files` will be a :class:`QueryDict` containing all the form files. `files` will be a :class:`QueryDict` containing all the form files.
""" """
upload_handlers = self.view.request._get_upload_handlers() upload_handlers = self.view.request._get_upload_handlers()
try:
django_parser = DjangoMultiPartParser(self.view.request.META, stream, upload_handlers) django_parser = DjangoMultiPartParser(self.view.request.META, stream, upload_handlers)
except MultiPartParserError, exc:
raise ErrorResponse(status.HTTP_400_BAD_REQUEST,
{'detail': 'multipart parse error - %s' % unicode(exc)})
return django_parser.parse() return django_parser.parse()