def reports_by_group_id(group_id): edges = [] nodes = [] index = {} _in = defaultdict(int) _out = defaultdict(int) ids = user_id_by_group_id(group_id) for n,i in enumerate(ids): index[i] = n for user_id in ids: user = get_user(user_id) if Blog.get(user_id=user_id): #blog_id = Blog.get(user_id=user_id).id author_id = get_author_id_by_user_id(user_id) comments = Comment.where(author_id=author_id) counts = count_in(comments, user_id, ids, _in, _out) for i, j in counts.iteritems(): target = get_user(i) edge = {'source': index[user_id], 'target': index[i], 'value': j, } edges.append(edge) nodes = [ { 'name': get_user(i).name, 'in': _in[i], 'out': _out[i], 'weight': _in[i]+_out[i], 'index': n, 'id':i, } for n,i in enumerate(ids) ] return {'nodes': nodes, 'links': edges}