added utils.obj2dict
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.10.0-trunk+timestamp.2014.08.16.23.20.56
|
Version 2.10.0-trunk+timestamp.2014.08.19.18.56.57
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ service = Service()
|
|||||||
plugins = PluginManager()
|
plugins = PluginManager()
|
||||||
|
|
||||||
## create all tables needed by auth if not custom tables
|
## create all tables needed by auth if not custom tables
|
||||||
|
auth.settings.extra_fields['auth_user'] = [Field('claims','list:string')]
|
||||||
auth.define_tables(username=False, signature=False)
|
auth.define_tables(username=False, signature=False)
|
||||||
|
|
||||||
## configure email
|
## configure email
|
||||||
|
|||||||
+26
-1
@@ -23,7 +23,7 @@ import logging
|
|||||||
import socket
|
import socket
|
||||||
import base64
|
import base64
|
||||||
import zlib
|
import zlib
|
||||||
|
import types
|
||||||
|
|
||||||
_struct_2_long_long = struct.Struct('=QQ')
|
_struct_2_long_long = struct.Struct('=QQ')
|
||||||
|
|
||||||
@@ -351,3 +351,28 @@ def getipaddrinfo(host):
|
|||||||
and isinstance(addrinfo[4][0], basestring)]
|
and isinstance(addrinfo[4][0], basestring)]
|
||||||
except socket.error:
|
except socket.error:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
def obj2dict(obj, processed=None):
|
||||||
|
"""
|
||||||
|
converts any objet into a dict, recursively
|
||||||
|
"""
|
||||||
|
processed = processed if not processed is None else set()
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
if isinstance(obj,(int,long,str,unicode,float,bool)):
|
||||||
|
return obj
|
||||||
|
if id(obj) in processed:
|
||||||
|
return '<reference>'
|
||||||
|
processed.add(id(obj))
|
||||||
|
if isinstance(obj,(list,tuple)):
|
||||||
|
return [obj2dict(item,processed) for item in obj]
|
||||||
|
if not isinstance(obj, dict) and hasattr(obj,'__dict__'):
|
||||||
|
obj = obj.__dict__
|
||||||
|
else:
|
||||||
|
return repr(obj)
|
||||||
|
return dict((key,obj2dict(value,processed)) for key,value in obj.items()
|
||||||
|
if not key.startswith('_') and
|
||||||
|
not type(value) in (types.FunctionType,
|
||||||
|
types.LambdaType,
|
||||||
|
types.BuiltinFunctionType,
|
||||||
|
types.BuiltinMethodType))
|
||||||
|
|||||||
Reference in New Issue
Block a user