annotate talosnames/web.py @ 24:56d267d847e1

more progress
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 10 Jul 2012 21:36:24 -0700
parents 82d15f93cc4a
children 6ec941f8704a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
1 #!/usr/bin/env python
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
2
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
3 """
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
4 web handler for talosnames
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
5 """
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
6
19
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
7 import os
22
Jeff Hammel <jhammel@mozilla.com>
parents: 21
diff changeset
8 import pprint
19
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
9 import tempita
18
76a8d2bd4007 starting on web part
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
10 from api import TalosNames
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
11 from webob import Request, Response, exc
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
12
19
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
13 here = os.path.dirname(os.path.abspath(__file__))
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
14 template = os.path.join(here, 'templates', 'index.html')
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
15
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
16 class Handler(object):
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
17
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
18 def __init__(self, **kw):
18
76a8d2bd4007 starting on web part
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
19 self.api = TalosNames()
19
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
20 self.template = file(template).read()
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
21
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
22 def __call__(self, environ, start_response):
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
23 request = Request(environ)
20
0a829ad6e116 more basic web stuff
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
24 response = Response(content_type='text/html',
19
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
25 body=self.render())
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
26 return response(environ, start_response)
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
27
19
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
28 def render(self):
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
29 template = tempita.HTMLTemplate(self.template)
21
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
30 suites = sorted(self.api.suites.keys())
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
31 tests = {}
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
32 for suite in suites:
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
33 try:
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
34 test = self.api.test_config(suite)
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
35 tests[suite] = test
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
36 except:
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
37 tests[suite] = None
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
38
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
39 data = {'suites': suites,
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
40 'commands': self.api.buildbot_commands,
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
41 'tbpl': dict([(suite, self.api.tbpl_name(suite))
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
42 for suite in suites]),
22
Jeff Hammel <jhammel@mozilla.com>
parents: 21
diff changeset
43 'tests': tests,
24
56d267d847e1 more progress
Jeff Hammel <jhammel@mozilla.com>
parents: 22
diff changeset
44 'pprint': pprint.pformat,
56d267d847e1 more progress
Jeff Hammel <jhammel@mozilla.com>
parents: 22
diff changeset
45 'api': self.api
21
48b4c926be73 getting there
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
46 }
20
0a829ad6e116 more basic web stuff
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
47 return template.substitute(data)
19
aae0a420c4f7 should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents: 18
diff changeset
48
0
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
49 if __name__ == '__main__':
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
50 from wsgiref import simple_server
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
51 app = Handler()
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
52 server = simple_server.make_server(host='0.0.0.0', port=8080, app=app)
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
53 server.serve_forever()
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
54
18
76a8d2bd4007 starting on web part
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
55