OLD | NEW |
| (Empty) |
1 | |
2 from zope.interface import implements | |
3 from twisted.python import components | |
4 from twisted.web.error import NoResource | |
5 | |
6 from buildbot.changes.changes import Change | |
7 from buildbot.status.web.base import HtmlResource, StaticHTML, IBox, Box | |
8 | |
9 # /changes/NN | |
10 class ChangesResource(HtmlResource): | |
11 | |
12 def body(self, req): | |
13 data = "" | |
14 data += "Change sources:\n" | |
15 sources = self.getStatus(req).getChangeSources() | |
16 if sources: | |
17 data += "<ol>\n" | |
18 for s in sources: | |
19 data += "<li>%s</li>\n" % s.describe() | |
20 data += "</ol>\n" | |
21 else: | |
22 data += "none (push only)\n" | |
23 return data | |
24 | |
25 def getChild(self, path, req): | |
26 num = int(path) | |
27 c = self.getStatus(req).getChange(num) | |
28 if not c: | |
29 return NoResource("No change number '%d'" % num) | |
30 return StaticHTML(c.asHTML(), "Change #%d" % num) | |
31 | |
32 | |
33 class ChangeBox(components.Adapter): | |
34 implements(IBox) | |
35 | |
36 def getBox(self, req): | |
37 url = req.childLink("../changes/%d" % self.original.number) | |
38 text = self.original.get_HTML_box(url) | |
39 return Box([text], class_="Change") | |
40 components.registerAdapter(ChangeBox, Change, IBox) | |
41 | |
OLD | NEW |