mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-21 13:50:20 +08:00
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
import os
|
|
import sys
|
|
|
|
from db_shell import * # noqa
|
|
from sqlalchemy import MetaData
|
|
from sqlalchemy.orm import class_mapper
|
|
try:
|
|
from sqlalchemy_schemadisplay import create_schema_graph, create_uml_graph
|
|
except ImportError:
|
|
print("please install sqlalchemy_schemadisplay to use this script (pip install sqlalchemy_schemadisplay)")
|
|
raise
|
|
|
|
|
|
gxy_root = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
|
|
sys.path.insert(1, os.path.abspath(os.path.join(gxy_root, 'lib')))
|
|
|
|
from galaxy import model
|
|
|
|
if __name__ == "__main__":
|
|
gxy_root = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
|
|
sqlitedb = os.path.join(gxy_root, 'database/universe.sqlite')
|
|
# Try to build a representation of what's in the sqlite database
|
|
if os.path.exists(sqlitedb):
|
|
graph = create_schema_graph(metadata=MetaData('sqlite:///' + sqlitedb),
|
|
show_datatypes=False,
|
|
show_indexes=False,
|
|
rankdir='LR',
|
|
concentrate=False)
|
|
print(f"Writing galaxy_universe.png, built from {sqlitedb}")
|
|
graph.write_png('galaxy_universe.png')
|
|
else:
|
|
print(f"No sqlitedb available at {sqlitedb}, skipping rendering")
|
|
|
|
# Build UML graph from loaded mapper
|
|
mappers = []
|
|
for attr in dir(model):
|
|
if attr[0] == '_':
|
|
continue
|
|
try:
|
|
cls = getattr(model, attr)
|
|
mappers.append(class_mapper(cls))
|
|
except Exception:
|
|
pass
|
|
|
|
graph = create_uml_graph(
|
|
mappers,
|
|
show_operations=False,
|
|
)
|
|
print("Writing galaxy_uml.png")
|
|
graph.write_png('galaxy_uml.png') # write out the file
|