From 1a10a06b9f510f796beb2ffef39c7885cba2ad67 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sun, 10 Jun 2012 19:53:35 +0200 Subject: [PATCH] Fixed #18457 -- Fixed encoding error in yaml deserializer Thanks jpaugh64 for the report. --- django/core/serializers/pyyaml.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/django/core/serializers/pyyaml.py b/django/core/serializers/pyyaml.py index 5effda5b46f..e490b8607d2 100644 --- a/django/core/serializers/pyyaml.py +++ b/django/core/serializers/pyyaml.py @@ -12,6 +12,8 @@ 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 +from django.utils.encoding import smart_str + class DjangoSafeDumper(yaml.SafeDumper): def represent_decimal(self, data): @@ -48,8 +50,10 @@ def Deserializer(stream_or_string, **options): """ 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) + if isinstance(stream_or_string, unicode): + stream = BytesIO(smart_str(stream_or_string)) else: stream = stream_or_string try: