source: 2011/26/write_report.py @ 2387

Revision 2387, 2.7 KB checked in by tekrjant, 8 years ago (diff)

Toinen skripti joka tekee raportin, jotta voidaan päivittää tiheämmin.

Line 
1"""
2Writes a html report of the build results. build_games.py
3should be run first.
4
5The report is written continuously. Hit Ctrl-c to stop.
6"""
7from __future__ import with_statement
8import sys
9import os
10from xml.dom.minidom import Document
11from os.path import *
12import shutil
13from shutil import *
14from glob import *
15from subprocess import *
16from datetime import *
17import time
18
19
20report_location = "\\\\eppu.it.jyu.fi\\kurssit\\npo\\temp"
21report = None
22table = None
23
24
25CSS = """
26tr {
27  color: white;
28}
29
30.success {
31  background-color: green;
32}
33
34.fail {
35  background-color: red;
36}
37"""
38
39
40def addElement(parent, name):
41        node = report.createElement(name)
42        parent.appendChild(node)
43        return node
44
45
46def addTextElement(parent, name, value):
47        node = report.createElement(name)
48        parent.appendChild(node)
49        node.appendChild(report.createTextNode(str(value)))
50        return node
51
52
53def initialize_report():
54        global report
55
56        report = Document()
57        html = addElement(report, "html")
58
59        refresh_tag = addElement(html, "meta")
60        refresh_tag.setAttribute("http-equiv", "refresh")
61        refresh_tag.setAttribute("content", "30")
62
63        head = addElement(html, "head")
64        style = addTextElement(head, "style", CSS)
65        style.setAttribute("type", "text/css")
66        addTextElement(head, "title", "Build")
67
68        body = addElement(html, "body")
69        global table
70        table = addElement(body, "table")
71
72
73def write_results():
74    for d in os.listdir("build"):
75            with open(join("build", d), "r") as f:
76                    lines = f.readlines()
77                    author = lines[0].strip()
78                    name = lines[1].strip()
79                    result = lines[2].strip()
80                    time_of_update = lines[3].strip()
81
82                    success = (result == "success")
83
84                    style = "success"
85                    if not success:
86                            style = "fail"
87                    tr = addElement(table, "tr")
88                    tr.setAttribute("class", style)
89                    addTextElement(tr, "td", author)
90                    addTextElement(tr, "td", name)
91                    addTextElement(tr, "td", time_of_update)
92
93
94def write_report():
95        with open(join(report_location, "build_report.html"), "w") as f:
96                f.write(report.toprettyxml())
97
98
99def main():
100        try:
101                while True:
102                        initialize_report()
103                        write_results()
104                        write_report()
105                        print "report written"
106                        time.sleep(15)
107        except KeyboardInterrupt:
108                print "cancelled"
109        except Exception, e:
110                print
111                print "NOT SUCCESSFUL:", e
112                return 1
113
114
115if __name__ == '__main__':
116        sys.exit(main())
117
Note: See TracBrowser for help on using the repository browser.