def content(self, request, cxt): status = self.getStatus(request) builders = request.args.get("builder", status.getBuilderNames()) cxt_builders = [] categories = set() for builder_name in builders: if not self.builder_filter_fn(builder_name): continue try: builder_status = status.getBuilder(builder_name) except KeyError: log.msg('status.getBuilder(%r) failed' % builder_name) continue classname = base.ITopBox(builder_status).getBox(request).class_ title = builder_name show_name = 'off' not in request.args.get('titles', ['off']) url = (base.path_to_root(request) + "waterfall?builder=" + urllib.quote(builder_name, safe='() ')) category = builder_status.getCategory() if category: category = category.split('|')[0] categories.add(category) cxt_builders.append({ 'outcome': classname, 'name': title, 'url': url, 'show_name': show_name, 'category': category }) cxt['builders'] = cxt_builders cxt['categories'] = sorted(categories) templates = request.site.buildbot_service.templates template = templates.get_template("horizontal_one_box_per_build.html") data = template.render(cxt) return data
def body(self, request): status = self.getStatus(request) builders = request.args.get("builder", status.getBuilderNames()) titles = request.args.get("titles", ["off"]) data = "<table style='width:100%'><tr>" for builder_name in builders: try: builder_status = status.getBuilder(builder_name) except KeyError: log.msg('status.getBuilder(%r) failed' % builder_name) continue classname = base.ITopBox(builder_status).getBox(request).class_ title = builder_name if len(re.split(' ', classname)) <= 1: classname += ' never' url = (self.path_to_root(request) + "waterfall?builder=" + urllib.quote(builder_name, safe='() ')) link = '<a href="%s" class="%s" title="%s" target=_blank>%s </a>' % ( url, classname, title, '' if "off" in titles else title) data += '<td valign=bottom class=mini-box>%s</td>' % link data += "</tr></table>" return data
def asDict(self, request): builders = request.args.get('builder', self.status.getBuilderNames()) data = {'builders': []} for builder_name in builders: if builder_name_schema.IsTrybot(builder_name): continue try: builder_status = self.status.getBuilder(builder_name) except KeyError: log.msg('status.getBuilder(%r) failed' % builder_name) continue outcome = base.ITopBox(builder_status).getBox(request).class_ lastbuild = 'LastBuild' if outcome.startswith(lastbuild): outcome = outcome[len(lastbuild):] data['builders'].append({ 'outcome': outcome.strip(), 'name': builder_name }) return data