Python 3 port in progress

This commit is contained in:
Christophe de Vienne
2012-04-26 00:03:25 +02:00
parent ae413cd49a
commit f475504e98
3 changed files with 28 additions and 8 deletions

View File

@@ -1,6 +1,7 @@
import datetime
from six import u
import six
try:
import xml.etree.ElementTree as et
@@ -63,7 +64,7 @@ def toxml(datatype, key, value):
el.append(toxml(attrdef.datatype, attrdef.name,
getattr(value, attrdef.key)))
else:
el.text = unicode(value)
el.text = six.text_type(value)
return el

View File

@@ -4,6 +4,7 @@ import traceback
import weakref
from six import u, b
import six
import webob
@@ -166,7 +167,20 @@ class WSRoot(object):
def _handle_request(self, request):
def default_prepare_response_body(request, results):
return u('\n').join(results)
r = None
sep = None
for value in results:
if sep is None:
if isinstance(value, six.text_type):
sep = u('\n')
r = u('')
else:
sep = b('\n')
r = b('')
else:
r += sep
r += value
return r
res = webob.Response()
res_content_type = None
@@ -207,7 +221,11 @@ class WSRoot(object):
body = prepare_response_body(request, (
self._do_call(protocol, context)
for context in protocol.iter_calls(request)))
res.unicode_body = body
if isinstance(body, six.text_type):
res.text = body
else:
res.body = body
if len(request.calls) == 1:
if hasattr(protocol, 'get_response_status'):

View File

@@ -2,7 +2,7 @@ import decimal
import datetime
import base64
from six import u
from six import u, b
import six
import wsme.tests.protocol
@@ -25,16 +25,17 @@ def dumpxml(key, obj, datatype=None):
for item in obj:
el.append(dumpxml('item', item, datatype[0]))
elif isinstance(datatype, dict):
key_type, value_type = list(datatype.items())[0]
for item in obj.items():
node = et.SubElement(el, 'item')
node.append(dumpxml('key', item[0], datatype.keys()[0]))
node.append(dumpxml('value', item[1], datatype.values()[0]))
node.append(dumpxml('key', item[0], key_type))
node.append(dumpxml('value', item[1], value_type))
elif datatype == wsme.types.binary:
el.text = base64.encodestring(obj)
elif isinstance(obj, six.string_types):
el.text = obj
elif type(obj) in (int, float, decimal.Decimal):
el.text = str(obj)
el.text = six.text_type(obj)
elif type(obj) in (datetime.date, datetime.time, datetime.datetime):
el.text = obj.isoformat()
elif hasattr(datatype, '_wsme_attributes'):
@@ -154,7 +155,7 @@ class TestRestXML(wsme.tests.protocol.ProtocolTestCase):
[int], {int: str}, bool,
datetime.date, datetime.time, datetime.datetime):
x = et.tostring(toxml(dt, 'value', None))
assert x == '<value nil="true" />', x
assert x == b('<value nil="true" />'), x
def test_parse_arg(self):
e = self.root.protocols[0].parse_arg('value', '5')