Mercurial > hg > NetworkVis
view d3s_examples/python-neo4jrestclient/sphaera.py @ 17:09c0a9ceb778
more pimping of commentaries_authors.
author | casties |
---|---|
date | Wed, 07 Oct 2015 15:41:00 +0200 |
parents | 18ef6948d689 |
children |
line wrap: on
line source
#!/usr/bin/env python from json import dumps from flask import Flask, Response, request, send_from_directory from neo4jrestclient.client import GraphDatabase, Node, Relationship app = Flask(__name__, static_url_path='/static/') #gdb = GraphDatabase("http://localhost:7474") gdb = GraphDatabase("http://euler.mpiwg-berlin.mpg.de:7474") @app.route('/json/<path:path>') def send_json(path): return send_from_directory('static/json', path) @app.route('/platin/<path:path>') def send_platin(path): return send_from_directory('static/platin', path) @app.route("/") def get_index(): return app.send_static_file('index.html') @app.route("/sphaera") def get_sphaera(): return app.send_static_file('index_sphaera.html') @app.route("/graph") def get_graph(): query = ("MATCH (m:Edition)<-[r]-(e:Edition) " "RETURN m,r,e " "LIMIT {limit}") results = gdb.query(query, params={"limit": request.args.get("limit", 10000)},returns=(Node,Relationship,Node)) nodes = [] rels = [] nodesIdSet=set() i = 0 for ed1,r,ed2 in results: ed1id = ed1.properties["Nid"] #lon = ed1.properties.get("lon","") #lat = ed1.properties.get("lat","") node = ed1.properties.copy() node["title"]=ed1id if ed1id not in nodesIdSet: nodes.append(node) nodesIdSet.add(ed1id) target = nodes.index(node) #lon = ed2.properties.get("lon","") #lat = ed2.properties.get("lat","") ed2id = ed2.properties["Nid"] node = ed2.properties.copy() node["title"]=ed2id if ed2id not in nodesIdSet: nodes.append(node) nodesIdSet.add(ed2id) source =nodes.index(node) rels.append({"source": source, "target": target}) return Response(dumps({"nodes": nodes, "links": rels}), mimetype="application/json") @app.route("/search") def get_search(): try: q = request.args["q"] except KeyError: return [] else: query = ("MATCH (ed:Edition) " "WHERE ed.name =~ {title} " "RETURN ed") results = gdb.query( query, returns=Node, params={"title": "(?i).*" + q + ".*"} ) return Response(dumps([{"edition": row.properties} for [row] in results]), mimetype="application/json") @app.route("/edition/<nid>") def get_movie(nid): query = ("MATCH (ed:Edition {Nid:{Nid}}) " "RETURN ed.Nid as Nid," "ed.Title as Title " "LIMIT 1") results = gdb.query(query, params={"Nid": nid}) nid, title = results[0] return Response(dumps({"title": nid, "name": title}), mimetype="application/json") if __name__ == '__main__': app.debug = True app.run(port=8080)