From e46cf7db6074bf0b2d009da855fe8f3aa7a76d99 Mon Sep 17 00:00:00 2001 From: warner Date: Sun, 30 Sep 2007 13:57:37 +0100 Subject: [PATCH] web: refactor OneLineMixin, add some CSS --- ChangeLog | 8 +++++++ buildbot/status/web/base.py | 41 ++++++++++++++++++++++++++++++- buildbot/status/web/baseweb.py | 53 +++++++---------------------------------- buildbot/status/web/builder.py | 15 +++--------- buildbot/status/web/classic.css | 4 ++++ 5 files changed, 64 insertions(+), 57 deletions(-) diff --git a/ChangeLog b/ChangeLog index c30a36d..f3be9bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2007-09-30 Brian Warner + * buildbot/status/web/base.py (OneLineMixin): refactor, move this + from builder.py, use it on the Builder page too + * buildbot/status/web/builder.py (StatusResourceBuilder): same + * buildbot/status/web/baseweb.py (OneLinePerBuild): display branch + names, add some CSS classes + * buildbot/status/web/classic.css (td.box): new class, for + OneBoxPerBuild + * docs/buildbot.texinfo (WebStatus): update docs * buildbot/slave/commands.py (SVN.parseGotRevision._parse): remove diff --git a/buildbot/status/web/base.py b/buildbot/status/web/base.py index f66208c..2cf375f 100644 --- a/buildbot/status/web/base.py +++ b/buildbot/status/web/base.py @@ -1,5 +1,5 @@ -import urlparse, urllib +import urlparse, urllib, time from zope.interface import Interface from twisted.web import html, resource from buildbot.status import builder @@ -294,3 +294,42 @@ def abbreviate_age(age): if age < 2*MONTH: return "about %s ago" % plural("week", "weeks", age / WEEK) return "a long time ago" + + +class OneLineMixin: + LINE_TIME_FORMAT = "%b %d %H:%M" + + def make_line(self, req, build, include_builder=True): + builder_name = build.getBuilder().getName() + results = build.getResults() + try: + rev = build.getProperty("got_revision") + if rev is None: + rev = "??" + except KeyError: + rev = "??" + if len(rev) > 20: + rev = "version is too-long" + root = self.path_to_root(req) + values = {'class': css_classes[results], + 'builder_name': builder_name, + 'buildnum': build.getNumber(), + 'results': css_classes[results], + 'buildurl': (root + + "builders/%s/builds/%d" % (builder_name, + build.getNumber())), + 'builderurl': (root + "builders/%s" % builder_name), + 'rev': rev, + 'time': time.strftime(self.LINE_TIME_FORMAT, + time.localtime(build.getTimes()[0])), + } + + fmt_pieces = ['(%(time)s)', + 'rev=[%(rev)s]', + '%(results)s', + ] + if include_builder: + fmt_pieces.append('%(builder_name)s') + fmt_pieces.append('#%(buildnum)d:') + data = " ".join(fmt_pieces) % values + return data diff --git a/buildbot/status/web/baseweb.py b/buildbot/status/web/baseweb.py index f327b6a..7d868c7 100644 --- a/buildbot/status/web/baseweb.py +++ b/buildbot/status/web/baseweb.py @@ -1,5 +1,5 @@ -import os, sys, time, urllib, weakref +import os, sys, urllib, weakref from itertools import count from zope.interface import implements @@ -10,7 +10,8 @@ from twisted.spread import pb from buildbot.interfaces import IControl, IStatusReceiver -from buildbot.status.web.base import HtmlResource, css_classes, Box, build_get_class, ICurrentBox +from buildbot.status.web.base import HtmlResource, Box, \ + build_get_class, ICurrentBox, OneLineMixin from buildbot.status.web.waterfall import WaterfallStatusResource from buildbot.status.web.changes import ChangesResource from buildbot.status.web.builder import BuildersResource @@ -64,43 +65,6 @@ def getLastNBuilds(status, numbuilds, builders=[], branches=[]): return [e[2] for e in events[-numbuilds:]] -class OneLineMixin: - LINE_TIME_FORMAT = "%b %d %H:%M" - - def make_line(self, req, build): - builder_name = build.getBuilder().getName() - results = build.getResults() - try: - rev = build.getProperty("got_revision") - if rev is None: - rev = "??" - except KeyError: - rev = "??" - if len(rev) > 20: - rev = "version is too-long" - root = self.path_to_root(req) - values = {'class': css_classes[results], - 'builder_name': builder_name, - 'buildnum': build.getNumber(), - 'results': css_classes[results], - 'buildurl': (root + - "builders/%s/builds/%d" % (builder_name, - build.getNumber())), - 'builderurl': (root + "builders/%s" % builder_name), - 'rev': rev, - 'time': time.strftime(self.LINE_TIME_FORMAT, - time.localtime(build.getTimes()[0])), - } - - fmt = ('(%(time)s) ' - '%(builder_name)s ' - 'rev=[%(rev)s] ' - '#%(buildnum)d: ' - '%(results)s ' - ) - data = fmt % values - return data - # /one_line_per_build # accepts builder=, branch=, numbuilds= class OneLinePerBuild(HtmlResource, OneLineMixin): @@ -134,7 +98,8 @@ class OneLinePerBuild(HtmlResource, OneLineMixin): data = "" # really this is "up to %d builds" - data += "

Last %d finished builds

\n" % numbuilds + data += "

Last %d finished builds: %s

\n" % \ + (numbuilds, " ".join(branches)) if builders: data += ("

of builders: %s

\n" % (", ".join(builders))) data += "