def _from_list(l): internal = [] for val in l: if type(val) == list: val = _from_list(val) elif type(val) == dict: val = _from_dict(val) else: # val type is not dict, not list, and most likely it is internal data type converter = get_external_converter(val) if converter: _, val = converter.to_external(None, val) internal.append(val) return internal
def _from_dict(doc): external = {} for key in doc: val = doc[key] # due to absence internal data type for geo point # we need to check every type whether it can be geo data. # Key of geo data starts with special prefix. converter = try_get_geopoint_external_converter(key) if not converter: if type(val) == dict: val = _from_dict(val) elif type(val) == list: val = _from_list(val) else: # val type is not dict, not list, and most likely it is internal data type converter = get_external_converter(val) if converter: key, val = converter.to_external(key, val) external[key] = val return external