Merged in cmcdaniel/wsme/empty_strings3 (pull request #11: restxml empty string fixes)
This commit is contained in:
		@@ -203,6 +203,13 @@ def dict_fromxml(datatype, element):
 | 
			
		||||
        for item in element.findall('item')))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@fromxml.when_object(wsme.types.text)
 | 
			
		||||
def unicode_fromxml(datatype, element):
 | 
			
		||||
    if element.get('nil') == 'true':
 | 
			
		||||
        return None
 | 
			
		||||
    return wsme.types.text(element.text) if element.text else six.u('')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@fromxml.when_object(datetime.date)
 | 
			
		||||
def date_fromxml(datatype, element):
 | 
			
		||||
    if element.get('nil') == 'true':
 | 
			
		||||
 
 | 
			
		||||
@@ -176,6 +176,13 @@ class ArgTypes(object):
 | 
			
		||||
        assert type(value) == wsme.types.text
 | 
			
		||||
        return value
 | 
			
		||||
 | 
			
		||||
    @expose(wsme.types.text)
 | 
			
		||||
    @validate(wsme.types.text)
 | 
			
		||||
    def settextnone(self, value):
 | 
			
		||||
        print(repr(value))
 | 
			
		||||
        assert type(value) == type(None)
 | 
			
		||||
        return value
 | 
			
		||||
 | 
			
		||||
    @expose(bool)
 | 
			
		||||
    @validate(bool)
 | 
			
		||||
    def setbool(self, value):
 | 
			
		||||
@@ -475,6 +482,14 @@ class ProtocolTestCase(unittest.TestCase):
 | 
			
		||||
        assert self.call('argtypes/settext', value=u('\xe3\x81\xae'),
 | 
			
		||||
                        _rt=wsme.types.text) == u('\xe3\x81\xae')
 | 
			
		||||
 | 
			
		||||
    def test_settext_empty(self):
 | 
			
		||||
        assert self.call('argtypes/settext', value=u(''),
 | 
			
		||||
                        _rt=wsme.types.text) == u('')
 | 
			
		||||
 | 
			
		||||
    def test_settext_none(self):
 | 
			
		||||
        assert self.call('argtypes/settextnone', value=None,
 | 
			
		||||
                        _rt=wsme.types.text) == None
 | 
			
		||||
 | 
			
		||||
    def test_setint(self):
 | 
			
		||||
        r = self.call('argtypes/setint', value=3, _rt=int)
 | 
			
		||||
        assert r == 3, r
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,8 @@ def dumpxml(key, obj, datatype=None):
 | 
			
		||||
        el.text = six.text_type(obj)
 | 
			
		||||
    elif type(obj) in (datetime.date, datetime.time, datetime.datetime):
 | 
			
		||||
        el.text = obj.isoformat()
 | 
			
		||||
    elif type(obj) == type(None):
 | 
			
		||||
        el.set('nil', 'true')
 | 
			
		||||
    elif hasattr(datatype, '_wsme_attributes'):
 | 
			
		||||
        for attr in datatype._wsme_attributes:
 | 
			
		||||
            name = attr.name
 | 
			
		||||
@@ -98,6 +100,8 @@ def loadxml(el, datatype):
 | 
			
		||||
            return parse_isotime(el.text)
 | 
			
		||||
        if datatype == datetime.datetime:
 | 
			
		||||
            return parse_isodatetime(el.text)
 | 
			
		||||
        if datatype == wsme.types.text:
 | 
			
		||||
            return datatype(el.text if el.text else u(''))
 | 
			
		||||
        if datatype == bool:
 | 
			
		||||
            return el.text.lower() != 'false'
 | 
			
		||||
        if datatype is None:
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ class TestSpore(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
        spore = json.loads(spore)
 | 
			
		||||
 | 
			
		||||
        assert len(spore['methods']) == 45, str(len(spore['methods']))
 | 
			
		||||
        assert len(spore['methods']) == 46, str(len(spore['methods']))
 | 
			
		||||
 | 
			
		||||
        m = spore['methods']['argtypes_setbytesarray']
 | 
			
		||||
        assert m['path'] == 'argtypes/setbytesarray', m['path']
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user