Fix setting string fields to support all types of strings

This commit is contained in:
Jason Paryani
2013-10-09 22:36:55 -07:00
parent 5639cb14b7
commit 0b67f3aeeb

View File

@@ -410,7 +410,7 @@ cdef _setDynamicField(_DynamicSetterClasses thisptr, field, value, parent):
elif value_type is bool: elif value_type is bool:
temp = C_DynamicValue.Reader(<cbool>value) temp = C_DynamicValue.Reader(<cbool>value)
thisptr.set(field, temp) thisptr.set(field, temp)
elif value_type is str: elif isinstance(value, basestring):
temp = C_DynamicValue.Reader(<char*>value) temp = C_DynamicValue.Reader(<char*>value)
thisptr.set(field, temp) thisptr.set(field, temp)
elif value_type is list: elif value_type is list:
@@ -429,13 +429,10 @@ cdef _setDynamicField(_DynamicSetterClasses thisptr, field, value, parent):
cdef _to_dict(msg): cdef _to_dict(msg):
msg_type = type(msg) msg_type = type(msg)
print msg_type
if msg_type is _DynamicListBuilder or msg_type is _DynamicListReader or msg_type is _DynamicResizableListBuilder: if msg_type is _DynamicListBuilder or msg_type is _DynamicListReader or msg_type is _DynamicResizableListBuilder:
print 'in list'
return [_to_dict(x) for x in msg] return [_to_dict(x) for x in msg]
if msg_type is _DynamicStructBuilder or msg_type is _DynamicStructReader: if msg_type is _DynamicStructBuilder or msg_type is _DynamicStructReader:
print 'in struct'
ret = {} ret = {}
try: try:
which = msg.which() which = msg.which()
@@ -445,7 +442,6 @@ cdef _to_dict(msg):
pass pass
for field in msg.schema.non_union_fields: for field in msg.schema.non_union_fields:
print field
if msg._has(field): if msg._has(field):
ret[field] = _to_dict(getattr(msg, field)) ret[field] = _to_dict(getattr(msg, field))