Fixed #18457 -- Fixed encoding error in yaml deserializer

Thanks jpaugh64 for the report.
This commit is contained in:
Claude Paroz 2012-06-10 19:53:35 +02:00
parent e9497a3803
commit 1a10a06b9f
1 changed files with 5 additions and 1 deletions

View File

@ -12,6 +12,8 @@ from django.db import models
from django.core.serializers.base import DeserializationError from django.core.serializers.base import DeserializationError
from django.core.serializers.python import Serializer as PythonSerializer from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer as PythonDeserializer from django.core.serializers.python import Deserializer as PythonDeserializer
from django.utils.encoding import smart_str
class DjangoSafeDumper(yaml.SafeDumper): class DjangoSafeDumper(yaml.SafeDumper):
def represent_decimal(self, data): def represent_decimal(self, data):
@ -48,8 +50,10 @@ def Deserializer(stream_or_string, **options):
""" """
Deserialize a stream or string of YAML data. Deserialize a stream or string of YAML data.
""" """
if isinstance(stream_or_string, basestring): if isinstance(stream_or_string, bytes):
stream = BytesIO(stream_or_string) stream = BytesIO(stream_or_string)
if isinstance(stream_or_string, unicode):
stream = BytesIO(smart_str(stream_or_string))
else: else:
stream = stream_or_string stream = stream_or_string
try: try: