Permalink
Browse files

Fixed #15197 -- Fixed yaml serialization into HttpResponse

Thanks fourga38 for the report and hirokiky at gmail.com for the
initial patch.
  • Loading branch information...
claudep committed Jun 28, 2012
1 parent 4f53e77 commit 26cb227cfe42d2500eac62dc0d90fb5227b275b3
@@ -52,9 +52,8 @@ def end_object(self, obj):
self._current = None
def getvalue(self):
# overwrite PythonSerializer.getvalue() with base Serializer.getvalue()
if callable(getattr(self.stream, 'getvalue', None)):
return self.stream.getvalue()
# Grand-parent super
return super(PythonSerializer, self).getvalue()
def Deserializer(stream_or_string, **options):
@@ -44,7 +44,8 @@ def end_serialization(self):
yaml.dump(self.objects, self.stream, Dumper=DjangoSafeDumper, **self.options)
def getvalue(self):
return self.stream.getvalue()
# Grand-parent super
return super(PythonSerializer, self).getvalue()
def Deserializer(stream_or_string, **options):
"""
@@ -21,6 +21,7 @@
from django.core.serializers import SerializerDoesNotExist
from django.core.serializers.base import DeserializationError
from django.db import connection, models
from django.http import HttpResponse
from django.test import TestCase
from django.utils.functional import curry
from django.utils.unittest import skipUnless
@@ -501,15 +502,18 @@ def streamTest(format, self):
obj.save_base(raw=True)
# Serialize the test database to a stream
stream = BytesIO()
serializers.serialize(format, [obj], indent=2, stream=stream)
# Serialize normally for a comparison
string_data = serializers.serialize(format, [obj], indent=2)
# Check that the two are the same
self.assertEqual(string_data, stream.getvalue())
stream.close()
for stream in (BytesIO(), HttpResponse()):
serializers.serialize(format, [obj], indent=2, stream=stream)
# Serialize normally for a comparison
string_data = serializers.serialize(format, [obj], indent=2)
# Check that the two are the same
if isinstance(stream, BytesIO):
self.assertEqual(string_data, stream.getvalue())
else:
self.assertEqual(string_data, stream.content)
stream.close()
for format in serializers.get_serializer_formats():
setattr(SerializerTests, 'test_' + format + '_serializer', curry(serializerTest, format))

0 comments on commit 26cb227

Please sign in to comment.