14POSTGRES_HOST=
"postgres"
16POSTGRES_USER=
"tiledviz"
19oldnodefile=
'TVDatabase/OLDcases/ANATOMIST/nodes.js'
20oldcasefile=
'TVDatabase/OLDcases/ANATOMIST/case_config_mandelbrot'
22sessionNAME=
'testSESSION'
23datapath=
'/home/brain/BrainDatas3/archi-sulci'
26 parser = argparse.ArgumentParser(
27 'Transform old nodes.js database to TiledViz database.')
28 parser.add_argument(
'-c',
'--oldcasefile', default=oldcasefile,
29 help=
'Old case_config_machine path (default: ANATOMIST Mandelbrot).')
30 parser.add_argument(
'-f',
'--oldnodefile', default=oldnodefile,
31 help=
'Old nodes.js path (default: ANATOMIST Mandelbrot).')
32 parser.add_argument(
'--host', default=POSTGRES_HOST,
33 help=
'Database host (default: '+POSTGRES_HOST+
')')
34 parser.add_argument(
'--port', default=POSTGRES_PORT,
35 help=
'Port (default: '+POSTGRES_PORT+
')')
36 parser.add_argument(
'-l',
'--login', default=POSTGRES_USER,
37 help=
'Database login (default: '+POSTGRES_USER+
')')
38 parser.add_argument(
'-n',
'--databasename', default=POSTGRES_DB,
39 help=
'Database name (default: '+POSTGRES_DB+
')')
40 parser.add_argument(
'-t',
'--usertest', default=
'ddurandi',
41 help=
'User name for test (default: ddurandi)')
42 parser.add_argument(
'-p',
'--projectNAME', default=projectNAME,
43 help=
'Project for test (default: '+projectNAME+
')')
44 parser.add_argument(
'-s',
'--sessionNAME', default=sessionNAME,
45 help=
'Session for test (default: '+sessionNAME+
')')
46 parser.add_argument(
'-C',
'--haveconnection', action=
'store_true',
47 help=
'Activate a connection object for the TileSet')
48 parser.add_argument(
'-H',
'--connecthost', default=
'HPCmachine',
49 help=
'Create a connection object to this host')
50 parser.add_argument(
'-r',
'--testsets', default=
'testTileSets',
51 help=
'Type for test (default: testTileSets)')
52 parser.add_argument(
'-m',
'--typeoftiles', default=
'CONNECTION',
53 help=
'Type of tiles (default: CONNECTION, PICTURE, HTML)')
54 parser.add_argument(
'-d',
'--datapath', default=datapath,
55 help=
'Path for data (default: '+datapath+
')')
56 parser.add_argument(
'-o',
'--passwordtest', default=
'5#f_@-m/1ArtOvx0',
57 help=
'Project for test (default: "5#f_@-m/1ArtOvx0")')
59 args = parser.parse_args(argv[1:])
62def read_old_casefile(case_config_file,args):
65 f=open(args.oldcasefile,
'r')
67 print(
'unable to open old case file.')
68 errors.write(traceback.format_exc() +
'\n')
72 re_def=re.compile(
"^\\w*=[A-Za-z0-9/_-]*")
78 matchdef=re_def.match(line)
81 key=line.split(
'=')[0]
83 value=line[0:matchdef.span()[1]].split(
'=')[1]
85 if (key ==
"CASE_NAME" ):
86 args.projectNAME=value
87 elif (key ==
"DATA_PATH" ):
89 elif (re.match(
r'.*(session|SESSION).*',key)):
90 args.sessionNAME=value
100 def __init__(self,nodesfilename):
102 f=open(nodesfilename,
'r')
104 print(
'unable to open old node.js file.')
105 errors.write(traceback.format_exc() +
'\n')
122 if (re.match(
r'.*\[',line)):
134 simplecote_def=re.compile(
"^\\s*\"\\w*\"\\s*:\\s*'.*'")
135 simple_def=re.compile(
"\'")
136 double_def=re.compile(
"\"")
137 pipe_def=re.compile(
"\|")
147 matchdef=simplecote_def.match(line__)
149 linesplit=line__[0:matchdef.span()[1]].split(
':')
151 value=double_def.sub(
"|",value)
152 value=simple_def.sub(
"\"",value)
153 value=pipe_def.sub(
"'",value)
154 line__=linesplit[0]+
" : "+value+
",\n"
157 myjson=myjson+line__[:-1]
164 if (re.match(
r'\]',line__)):
184 def __getitem__(self,num):
190if __name__ ==
'__main__':
191 args = parse_args(sys.argv)
192 print(
'case file : ',args.oldcasefile)
193 print(
'node file : ',args.oldnodefile)
194 read_old_casefile(args.oldcasefile,args)
198 Mynodes=
OldJson(args.oldnodefile)
199 print(
"Test one (second) element : |", Mynodes[1][
"comment"],
"|")
203 metadata, conn, engine, pool, session = tvdb.SQLconnector(args)
204 for _t
in metadata.tables:
207 hashpass, salt=tvdb.passprotected(args.passwordtest)
208 id_users, uniqUser = tvdb.insert_table(
'users',{
"name":args.usertest,
"salt":salt,
"password":hashpass})
210 tvdb.print_table(
"users")
212 id_projects, uniq = tvdb.insert_table(
'projects',{
"name":args.projectNAME,
"id_users":id_users,
"description":
"This is an old case "+args.projectNAME})
213 tvdb.print_table(
"projects")
215 config_default_file=open(
"TVWeb/app/static/js/config_default.json",
'r')
216 json_configs=json.load(config_default_file)
217 config_default_file.close()
220 id_sessions, uniqSession = tvdb.insert_table(
'sessions',{
"name":args.sessionNAME,
"id_projects":id_projects,
"description":
"This is an old case "+args.projectNAME+
" session "+args.sessionNAME,
"Number_of_active_users":1,
"timeout":480,
"config":json_configs})
221 tvdb.print_table(
"sessions")
223 if (uniqSession
or uniqUser):
224 id_users_sessions, uniq = tvdb.insert_table(
'many_users_has_many_sessions',{
"id_sessions":id_sessions,
"id_users":id_users})
226 if (args.haveconnection):
227 id_connection, uniqConnection = tvdb.insert_table(
'connections',{
"host_address":args.connecthost,
229 "container":
"docker swarm",
232 "scheduler_file":
"path_to_connection_f",
233 "config_files":{
"site_config":
"path_to_site_file",
"hostfile":
"path_to_hostfile"}})
234 tvdb.print_table(
"connections")
236 id_tile_sets, uniqTileSet = tvdb.insert_table(
'tile_sets',{
"name":args.testsets,
"type_of_tiles":args.typeoftiles,
"Dataset_path":args.datapath,
"id_connections":id_connection})
238 id_tile_sets, uniqTileSet = tvdb.insert_table(
'tile_sets',{
"name":args.testsets,
"type_of_tiles":args.typeoftiles,
"Dataset_path":args.datapath})
240 tvdb.print_table(
"tile_sets")
242 if (uniqSession
or uniqTileSet):
243 id_sessions_tilesets, uniq = tvdb.insert_table(
'many_sessions_has_many_tile_sets',{
"id_sessions":id_sessions,
"id_tile_sets":id_tile_sets})
246 now = datetime.datetime.now()
247 print (
"Tiles creation : ",now)
251 for i
in range(len(Mynodes)):
252 Mynodes[i][
"tags"]=
""
254 for i
in range(len(Mynodes)):
255 searchPort=re.search(
r'port=\d+',Mynodes[i][
"url"])
257 ConnectionPort=int(searchPort.group().replace(
'port=',
''))
260 tiles.append({
"title" : Mynodes[i][
"title"],
261 "comment" : Mynodes[i][
"comment"],
262 "tags": Mynodes[i][
"tags"],
263 "source" : {
"connection" : ConnectionPort,
264 "url" : Mynodes[i][
"url"]
268 'creation_date' : now
271 table_tiles = metadata.tables[
'tiles']
274 myinsert=table_tiles.insert()
275 connexe=conn.execute(myinsert, tiles)
284 select_st = table_tiles.select().where(table_tiles.c.creation_date==now)
285 res = conn.execute(select_st)
288 many_tiles_has_many_tile_sets=[]
291 id_tiles.append(_row[0])
292 many_tiles_has_many_tile_sets.append({
"id_tiles":_row[0],
"id_tile_sets":id_tile_sets})
293 print(
"All tiles:",id_tiles)
296 table_tilesets_tiles = metadata.tables[
'many_tiles_has_many_tile_sets']
298 myinsert = table_tilesets_tiles.insert()
300 connexe=conn.execute(myinsert, many_tiles_has_many_tile_sets)