lin
2025-07-30 fcd736bf35fd93b563e9bbf594f2aa7b62028cc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/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()