From ba98e13da7a9a84cc6a20d20d2de2d9818e52570 Mon Sep 17 00:00:00 2001 From: Honza Kral Date: Thu, 20 Jun 2013 14:07:09 +0200 Subject: [PATCH] Don't serialize stings --- elasticsearch/serializer.py | 4 ++++ elasticsearch/transport.py | 2 +- test_elasticsearch/test_serializer.py | 3 +++ test_elasticsearch/test_transport.py | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/elasticsearch/serializer.py b/elasticsearch/serializer.py index 0209b948..1f3dd540 100644 --- a/elasticsearch/serializer.py +++ b/elasticsearch/serializer.py @@ -16,6 +16,10 @@ class JSONSerializer(object): raise SerializationError(e) def dumps(self, data): + # don't serialize strings + if isinstance(data, (type(''), type(u''))): + return data + try: return json.dumps(data, default=self.default) except (ValueError, TypeError) as e: diff --git a/elasticsearch/transport.py b/elasticsearch/transport.py index 9d1f5a6e..c790f803 100644 --- a/elasticsearch/transport.py +++ b/elasticsearch/transport.py @@ -207,7 +207,7 @@ class Transport(object): :arg body: body of the request, will be serializes using serializer and passed to the connection """ - if body: + if body is not None: body = self.serializer.dumps(body) for attempt in range(self.max_retries + 1): diff --git a/test_elasticsearch/test_serializer.py b/test_elasticsearch/test_serializer.py index d994ce67..65d7abc0 100644 --- a/test_elasticsearch/test_serializer.py +++ b/test_elasticsearch/test_serializer.py @@ -15,3 +15,6 @@ class TestJSONSerializer(TestCase): self.assertRaises(SerializationError, JSONSerializer().loads, object()) self.assertRaises(SerializationError, JSONSerializer().loads, '') self.assertRaises(SerializationError, JSONSerializer().loads, '{{') + + def test_strings_are_left_untouched(self): + self.assertEquals('Hello World!', JSONSerializer().dumps('Hello World!')) diff --git a/test_elasticsearch/test_transport.py b/test_elasticsearch/test_transport.py index 0080dc38..4b44973b 100644 --- a/test_elasticsearch/test_transport.py +++ b/test_elasticsearch/test_transport.py @@ -3,7 +3,7 @@ from unittest import TestCase from elasticsearch.transport import Transport from elasticsearch.connection import Connection -from elasticsearch.exceptions import TransportError, ConnectionError +from elasticsearch.exceptions import ConnectionError class DummyConnection(Connection): def __init__(self, **kwargs):