blob: db4e122645112511f203594e726b169b94f40595 [file] [log] [blame] [edit]
#!/usr/bin/env python3
"""
Generates schema diagrams for Django apps. Just run the script with no
arguments. If you don't have them installed, you'll need "dot" from the
Graphviz package and Django.
"""
import common
import os
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
PROJECTS = (
('frontend', 'tko'),
('frontend', 'afe'),
)
def main():
for project, app in PROJECTS:
settings = '%s.settings' % project
os.environ['DJANGO_SETTINGS_MODULE'] = settings
# import after setting DJANGO_SETTINGS_MODULE
from contrib import modelviz
# hack to force reload of settings and app list
import django.conf
from django.db.models import loading
reload(django.conf)
reload(loading)
print('Analyzing', project)
dot_contents = modelviz.generate_dot([app])
dot_path = project + '.dot'
dotfile = open(dot_path, 'w')
dotfile.write(dot_contents)
dotfile.close()
print('Wrote', dot_path)
png_path = project + '.png'
os.system('dot -Tpng -o %s %s' % (png_path, dot_path))
print('Generated', png_path)
print()
del os.environ['DJANGO_SETTINGS_MODULE']
if __name__ == '__main__':
main()