Python 3 port in progress
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
22
wsme/root.py
22
wsme/root.py
@@ -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'):
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user