py3: send Decimal number as string instead of base64 encoded value

for Decimal only from client to server direction uses __base64__
notation. Server replies with pure string for Decimal data, and also
server is able to parse string and create decimal values where needed.

without this we need ugly py3 code:
-        return {'__base64__': base64.b64encode(str(val))}
+        return {'__base64__': base64.b64encode(
+            str(val).encode('ascii')).decode('ascii')}

https://fedorahosted.org/freeipa/ticket/4985

Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
Martin Basti 2017-02-07 17:46:08 +01:00 committed by Jan Cholasta
parent ab53d80883
commit 4c84341b8b

View File

@ -308,7 +308,7 @@ def json_encode_binary(val, version):
encoded = encoded.decode('ascii')
return {'__base64__': encoded}
elif isinstance(val, Decimal):
return {'__base64__': base64.b64encode(str(val))}
return unicode(val)
elif isinstance(val, DN):
return str(val)
elif isinstance(val, datetime.datetime):