Mercurial > hg > NetworkVis
view d3s_examples/python-neo4jrestclient/sphaera.py @ 27:ed8b4e3f2a73
ISMI.HTML -- Better implementation of query boxes using Select2 on ismi.html, however when the first drop down is changed the ccorresponding one doesn't delete old data. select2('data', null) and similar methods of deleting has been unsuccessful so far
author | arussell |
---|---|
date | Wed, 02 Dec 2015 00:53:02 -0500 |
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)