Fixed metadata serialization of Numbers and DNs

There were following problems:
1. DNs and Decimals weren't properly serialized. Serialization output was object with empty __base64__ attribute. It was fixed by converting them to string.
2. numberical values equal to 0 were excluded from metadata. It broke many of minvalue checks in Web UI. Now excluding only None and False values as initally intended.

https://fedorahosted.org/freeipa/ticket/3052
This commit is contained in:
Petr Vobornik
2012-09-05 14:35:44 +02:00
parent 6a8d6d3fde
commit 07cae43484
3 changed files with 8 additions and 4 deletions

View File

@@ -26,6 +26,7 @@ import imp
import time
import socket
import re
import decimal
from types import NoneType
from weakref import WeakKeyDictionary
from dns import resolver, rdatatype
@@ -46,6 +47,8 @@ def json_serialize(obj):
return obj
if isinstance(obj, str):
return obj.decode('utf-8')
if isinstance(obj, (decimal.Decimal, DN)):
return str(obj)
if not callable(getattr(obj, '__json__', None)):
# raise TypeError('%r is not JSON serializable')
return ''