1#!/usr/bin/env python
2
3"""
4Generates schema diagrams for Django apps.  Just run the script with no
5arguments.  If you don't have them installed, you'll need "dot" from the
6Graphviz package and Django.
7"""
8
9import common
10import os
11
12ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
13PROJECTS = (
14        ('frontend', 'tko'),
15        ('frontend', 'afe'),
16    )
17
18
19def main():
20    for project, app in PROJECTS:
21        settings = 'autotest_lib.%s.settings' % project
22        os.environ['DJANGO_SETTINGS_MODULE'] = settings
23
24        # import after setting DJANGO_SETTINGS_MODULE
25        from autotest_lib.contrib import modelviz
26
27        # hack to force reload of settings and app list
28        import django.conf
29        from django.db.models import loading
30        reload(django.conf)
31        reload(loading)
32
33        print 'Analyzing', project
34        dot_contents = modelviz.generate_dot([app])
35
36        dot_path = project + '.dot'
37        dotfile = open(dot_path, 'w')
38        dotfile.write(dot_contents)
39        dotfile.close()
40        print 'Wrote', dot_path
41
42        png_path = project + '.png'
43        os.system('dot -Tpng -o %s %s' % (png_path, dot_path))
44        print 'Generated', png_path
45        print
46
47        del os.environ['DJANGO_SETTINGS_MODULE']
48
49
50if __name__ == '__main__':
51    main()
52