52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
|
#!/usr/bin/env python2
|
||
|
|
||
|
"""
|
||
|
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 = 'autotest_lib.%s.settings' % project
|
||
|
os.environ['DJANGO_SETTINGS_MODULE'] = settings
|
||
|
|
||
|
# import after setting DJANGO_SETTINGS_MODULE
|
||
|
from autotest_lib.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()
|