TiledViz
Loading...
Searching...
No Matches
SessionDatabase.py
1#!/bin/env python3
2
3import sys,os
4import argparse
5import json
6import datetime
7#import glob
8import traceback
9
10errors=sys.stderr
11
12from TVDb import tvdb
13
14POSTGRES_HOST="postgres"
15POSTGRES_PORT="6431"
16POSTGRES_USER="tiledviz"
17POSTGRES_DB="TiledViz"
18
19# sys.path.append(os.path.abspath('./TVWeb'))
20# from app import models
21from TVDb import models
22
23projectNAME='VMD'
24sessionNAME='testSESSION'
25jsonoutputFile='OutputTestfile.json'
26
27def parse_args(argv):
28 parser = argparse.ArgumentParser(
29 'From a (users,project,session) get tile_sets, tiles and connections tables and build a session json structure from TiledViz database.')
30 parser.add_argument('--host', default=POSTGRES_HOST,
31 help='Database host (default: '+POSTGRES_HOST+')')
32 parser.add_argument('--port', default=POSTGRES_PORT,
33 help='Port (default: '+POSTGRES_PORT+')')
34 parser.add_argument('-l', '--login', default=POSTGRES_USER,
35 help='Database login (default: '+POSTGRES_USER+')')
36 parser.add_argument('-n', '--databasename', default=POSTGRES_DB,
37 help='Database name (default: '+POSTGRES_DB+')')
38 parser.add_argument('-t', '--usertest', default='ddurandi',
39 help='User name for test (default: ddurandi)')
40 parser.add_argument('-p', '--projectNAME', default=projectNAME,
41 help='Project for test (default: '+projectNAME+')')
42 parser.add_argument('-s', '--sessionNAME', default=sessionNAME,
43 help='Session for test (default: '+sessionNAME+')')
44 parser.add_argument('-j', '--enablejsonwrite', action='store_true',
45 help='Active json data save.')
46 parser.add_argument('-f', '--jsonfile', default=jsonoutputFile,
47 help='Json output file (default: '+jsonoutputFile+' )')
48
49 args = parser.parse_args(argv[1:])
50 return args
51
52if __name__ == '__main__':
53 args = parse_args(sys.argv)
54 if (args.enablejsonwrite):
55 print("Json output file enable :",args.jsonfile)
56
57 metadata, conn, engine, pool, session = tvdb.SQLconnector(args)
58 for _t in metadata.tables:
59 print("Table: ", _t)
60
61 print("Session id for sessionname = "+args.sessionNAME+" : ",
62 session.query(models.Sessions.id).filter_by(name=args.sessionNAME).scalar())
63 #session.query(models.Users).join(models.Users.username)
64
65 ThisSession=session.query(models.Sessions).filter(models.Sessions.name == args.sessionNAME).first()
66 # ThisTileSet_ThisSession=ThisSession.tile_sets[0]
67 # print("First TileSet for this session "+sessionNAME+" : ", ThisTileSet_ThisSession.name)
68
69 # ThoseSession=session.query(models.Sessions).filter(models.Sessions.name == "Mandelbrot").first()
70 # ListAllTileSet_ThoseSession=session.query(models.Sessions).filter(models.Sessions.name == "Mandelbrot").first().tile_sets
71 # print("All TileSets for this session 'Mandelbrot' : ",
72 # [ thistileset.name for thistileset in ListAllTileSet_ThoseSession ])
73
74 ListAllTileSet_ThisSession=ThisSession.tile_sets
75 print("All TileSets for this session "+args.sessionNAME+" : ",
76 [ thistileset.name for thistileset in ListAllTileSet_ThisSession ])
77
78 JsonSession=tvdb.encode_session(args.sessionNAME,models.Sessions)
79
80 if ( args.enablejsonwrite ):
81 try:
82 g=open(args.jsonfile,'w+')
83 except Exception:
84 print('unable to open '+args.jsonfile+' file for writing.')
85 errors.write(traceback.format_exc() + '\n')
86 errors.write("\n\n")
87 exit(2)
88 json.dump(JsonSession,g)
89 g.close()
90 else:
91 print("In memory Json Session : ",json.dumps(JsonSession))
92