普通文本  |  52行  |  1.3 KB

#!/usr/bin/env python

"""
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()