1
2
3
4
5
6
7
8
9
10
11 import sys, os, shutil
12 import logging
13 logging.basicConfig()
14 root = logging.getLogger()
15 root.setLevel(logging.CRITICAL)
16
17 import Globals
18
19 from utils import importClasses
20 from Products.ZenUtils.Utils import zenPath
21
23
24 - def __init__(self, baseModule, classList, outdir="docs"):
29
30
36
37
38
40 """
41 Generate our index file must be called after all classes are processed.
42 """
43 self.of = open(os.path.join(self.outdir, "index.html"),"w")
44 self.writeHeader()
45 keys = sorted(self._classnames.keys())
46 self.writeTableHeader("Classes", ("ClassName", ))
47 for clsname in keys:
48 filepath = self._classnames[clsname]
49 self.of.write("""<tr class="tablevalues">""")
50 self.td("""<a href="%s">%s</a>""" % (filepath, clsname))
51 self.of.write("</table>")
52 self.writeFooter()
53 self.of.close()
54
55
67
68
70 props = getattr(cls, "_properties", False)
71 if not props: return
72 self.writeTableHeader("Properties", ("name", "type", "mode", "setter"))
73 for prop in props:
74 self.of.write("""<tr class="tablevalues">""")
75 for key in ("id", "type", "mode", "setter"):
76 self.of.write("""<td>%s</td>""" % prop.get(key, ""))
77 self.of.write("</tr>")
78 self.of.write("</table>")
79
80
98
99
101 self.of.write("<table>")
102 self.of.write(
103 """<tr class="tabletitle"><td colspan="%s">%s</td></tr>""" % (
104 len(colnames), title))
105 self.of.write("""<tr class="tableheader">""")
106 for colname in colnames:
107 self.of.write("<td>%s</td>" % colname)
108
109
111 self.of.write("<html>")
112 self.of.write("<head>")
113 self.of.write("""<link rel="stylesheet" href="schemadoc.css" """
114 """type="text/css" />""")
115 self.of.write("</head>")
116 self.of.write("<body>")
117
118
121
122
124 name = getattr(cls, "__name__", cls)
125 return ".".join((self.baseModule, name)) + ".html"
126
127
129 filename = os.path.join(self.outdir, self.getHref(cls))
130 dirname = os.path.dirname(filename)
131 if not os.path.isdir(dirname): os.makedirs(dirname, 0750)
132 return filename
133
134
135 - def td(self, value):
137
138
139 baseModule = None
140 if len(sys.argv) > 1:
141 baseModule = sys.argv[1]
142 docdir = zenPath("zendocs/schema")
143 classList = importClasses(basemodule=baseModule,
144 skipnames=("ZentinelPortal", "ZDeviceLoader"))
145 htmlGen = HtmlGenerator(baseModule, classList, docdir)
146 htmlGen.generate()
147 cssfile = os.path.join(os.path.dirname(__file__),"schemadoc.css")
148 shutil.copy2(cssfile, docdir)
149