1
0
mirror of https://github.com/django/django.git synced 2025-11-07 07:15:35 +00:00

Fixed #11970 -- Wrapped the exception happening during deserialization in DeserializationError exceptions. Thanks, Claude Paroz.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17469 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jannis Leidel
2012-02-09 18:56:58 +00:00
parent 75a9c8a5ef
commit 49288f8388
3 changed files with 28 additions and 5 deletions

View File

@@ -6,6 +6,7 @@ import datetime
import decimal
from StringIO import StringIO
from django.core.serializers.base import DeserializationError
from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer as PythonDeserializer
from django.utils import simplejson
@@ -27,6 +28,7 @@ class Serializer(PythonSerializer):
if callable(getattr(self.stream, 'getvalue', None)):
return self.stream.getvalue()
def Deserializer(stream_or_string, **options):
"""
Deserialize a stream or string of JSON data.
@@ -35,8 +37,13 @@ def Deserializer(stream_or_string, **options):
stream = StringIO(stream_or_string)
else:
stream = stream_or_string
for obj in PythonDeserializer(simplejson.load(stream), **options):
yield obj
try:
for obj in PythonDeserializer(simplejson.load(stream), **options):
yield obj
except Exception, e:
# Map to deserializer error
raise DeserializationError(e)
class DjangoJSONEncoder(simplejson.JSONEncoder):
"""

View File

@@ -9,6 +9,7 @@ import decimal
import yaml
from django.db import models
from django.core.serializers.base import DeserializationError
from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer as PythonDeserializer
@@ -51,6 +52,9 @@ def Deserializer(stream_or_string, **options):
stream = StringIO(stream_or_string)
else:
stream = stream_or_string
for obj in PythonDeserializer(yaml.safe_load(stream), **options):
yield obj
try:
for obj in PythonDeserializer(yaml.safe_load(stream), **options):
yield obj
except Exception, e:
# Map to deserializer error
raise DeserializationError(e)