33
44from topogram_client import TopogramAPIClient
55from random import randint
6+ from csv import DictReader
67
78# credentials
89TOPOGRAM_URL = "http://localhost:3000" # "https://app.topogram.io"
9101011PASSWORD = "password"
1112
12-
1313# data
14- NODES_COUNT = 5
15- EDGES_COUNT = 8
14+ my_nodes = []
1615my_edges = []
1716
18- my_nodes = [{
19- "data" : {
20- "id" : str (i ),
21- "name" : "Node %s" % i
22- }
23- }for i in range (0 ,NODES_COUNT + 1 )]
24-
25- for n in range (0 ,EDGES_COUNT ):
26- src = str (randint (0 ,NODES_COUNT ))
27- tgt = str (randint (0 ,NODES_COUNT ))
28- edge = {
29- "data" : {
30- "source" : src ,
31- "target" : tgt ,
32- "weight" : 5 ,
33- "name" : "Edge from %s to %s" % (src , tgt )
34- }
35- }
36- my_edges .append (edge )
17+ with open ('data/test_data_nodes.csv' ) as f :
18+ reader = DictReader (f )
19+ for n in reader :
20+ node = {
21+ "id" : n ["id" ],
22+ "name" : n ["name" ],
23+ "lat" : float (n ["lat" ]),
24+ "lng" : float (n ["lng" ]),
25+ "weight" : float (n ["weight" ]),
26+ "start" : n ["year_start" ],
27+ "end" : n ["year_stop" ]
28+ }
29+ my_nodes .append ({ "data" : node })
3730
38- print my_edges
3931print my_nodes
4032
41- # connect to the topogram instance
42- topogram = TopogramAPIClient (TOPOGRAM_URL )
43-
44- # create a new user
45- # topogram.create_user(USER, PASSWORD)
33+ with open ('data/test_data_edges.csv' ) as f :
34+ reader = DictReader (f )
35+ for e in reader :
36+ edge = {
37+ "source" : e ["source" ],
38+ "target" : e ["target" ],
39+ "weight" : float (e ["weight" ])
40+ }
41+ my_edges .append ({ "data" : edge })
4642
47- # login a new user if needed
48- # topogram.user_login(USER, PASSWORD)
43+ # print my_edges
4944
5045def create_topogram (title , nodes , edges ):
5146
5247 print "Creating topogram '%s'" % title
5348
54- r = topogram .create_topogram (title )
55- print r
56- print r ["data" ]
49+ try :
50+ r = topogram .create_topogram (title )
51+ except ValueError :
52+ print '> Topogram already exists'
53+ r = topogram .get_topogram_by_name (title )
54+
5755 topogram_ID = r ["data" ]["_id" ]
56+ print "topogram ID : %s" % topogram_ID
5857
5958 # get and backup existing nodes and edges
6059 existing_nodes = topogram .get_nodes (topogram_ID )["data" ]
6160 existing_edges = topogram .get_edges (topogram_ID )["data" ]
6261
63-
6462 # clear existing graph
6563 if len (existing_nodes ):
6664 topogram .delete_nodes ([n ["_id" ] for n in existing_nodes ])
@@ -70,11 +68,27 @@ def create_topogram(title, nodes, edges):
7068 print "%s edges deleted" % len (existing_edges )
7169
7270 r = topogram .create_nodes (topogram_ID , nodes )
71+ print r
7372 print "%s nodes created." % len (r ["data" ])
7473 r = topogram .create_edges (topogram_ID , edges )
7574 print "%s edges created." % len (r ["data" ])
7675
77- print "done. Topogram has been updated. Check it at %s/topograms/%s/view" % (TOPOGRAM_URL , topogram_ID )
76+ print "done. Topogram has been updated. Check it at %s/topograms/%s" % (TOPOGRAM_URL , topogram_ID )
77+
78+ # connect to the topogram instance (pass debug=True params for more info )
79+ topogram = TopogramAPIClient (TOPOGRAM_URL ) #, debug=True)
80+
81+ # create a new user
82+ try :
83+ topogram .create_user (USER , PASSWORD )
84+ except ValueError :
85+ print "> User has already been created."
86+
87+ # login a new user if needed
88+ resp_user_login = topogram .user_login (USER , PASSWORD )
89+ print resp_user_login
7890
91+ assert (resp_user_login ["status" ] == "success" )
92+ assert (resp_user_login ["status_code" ] == 200 )
7993
80- create_topogram ("Test " , my_nodes , my_edges )
94+ create_topogram ("Geo-time network " , my_nodes , my_edges )
0 commit comments