示例#1
0
        def augment(path,o, parent=None):
            """Descend recursively"""
            from ambry.identity import ObjectNumber
            
            path_num = ObjectNumber.base62_decode(''.join( ObjectNumber.base62_encode(e[1]).zfill(2) for e in path ))
                 
            objects = []

            if isinstance(o, dict):

                for i,(k,v) in enumerate(o.items(),1):
                    objects += augment(path+[ (k,i,) ], v, k)
                    
                o['path'] = tuple(path)
                
                o['path_num'] = path_num
                o['parent'] = parent if parent else 'root'
                objects += [{ k:v for k,v in o.items()   if not isinstance(v,(list,dict))}]
                                 
            elif isinstance(o, list):
                for i, v in enumerate(o,1):
                    objects += augment(path+[ (i,i,) ], v, parent)
                    
            return objects