Mercurial > p > roundup > code
view scripts/schema_diagram.py @ 6632:e7143e4f6753
try to update to python 3.10.4 from 3.10.0 and try 3.11
Travis ci doesn't seem to tell us what python versions are
supported. The one form that is supposed to show that doesn't work for
me. Also it looks like nightly is suck at 3.10.0a5+ which isn't
nightly.
python 3.10.4 is released and current. 3.11 is pre-release/nightly so
trying it to replace broken nightly.
These upgrades may need to be reverted if invalid.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 16 Apr 2022 17:04:20 -0400 |
| parents | 23b8e6067f7c |
| children | 9c3ec0a5c7fc |
line wrap: on
line source
#! /usr/bin/python # # Schema diagram generator contributed by Stefan Seefeld of the fresco # project http://www.fresco.org/. # # It generates a 'dot file' that is then fed into the 'dot' # tool (http://www.graphviz.org) to generate a graph: # # %> ./schema.py # %> dot -Tps schema.dot -o schema.ps # %> gv schema.ps # from __future__ import print_function import sys import roundup.instance # open the instance instance = roundup.instance.open(sys.argv[1]) db = instance.open() # diagram preamble print('digraph schema {') print('size="8,6"') print('node [shape="record" bgcolor="#ffe4c4" style=filled]') print('edge [taillabel="1" headlabel="1" dir=back arrowtail=ediamond]') # get all the classes types = list(db.classes.keys()) # one record node per class for i in range(len(types)): print('node%d [label=\"{%s|}"]'%(i, types[i])) # now draw in the relations for name in db.classes.keys(): type = db.classes[name] attributes = type.getprops() for a in attributes.keys(): attribute = attributes[a] if isinstance(attribute, roundup.hyperdb.Link): print('node%d -> node%d [label=%s]'%(types.index(name), types.index(attribute.classname), a)) elif isinstance(attribute, roundup.hyperdb.Multilink): print('node%d -> node%d [taillabel="*" label=%s]'%(types.index(name), types.index(attribute.classname), a)) # all done print('}')
