mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-19 02:21:32 +08:00
57 lines
1.7 KiB
Python
57 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
|