The branch, master has been updated via c742b9f add cast. from 57e649e Fix revision .
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit c742b9f991ea32bf4121c9de47cfe65817e716ae Author: Jelmer Vernooij <jel...@samba.org> Date: Mon Nov 22 02:49:51 2010 +0100 add cast. ----------------------------------------------------------------------- Summary of changes: buildfarm/sqldb.py | 23 ++++++++++++++++++++--- buildfarm/web/__init__.py | 11 ++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) Changeset truncated at 500 lines: diff --git a/buildfarm/sqldb.py b/buildfarm/sqldb.py index bf1d570..e950c72 100644 --- a/buildfarm/sqldb.py +++ b/buildfarm/sqldb.py @@ -40,10 +40,27 @@ try: except ImportError: import sqlite3 from storm.database import create_database +from storm.expr import EXPR, FuncExpr, compile from storm.locals import Bool, Desc, Int, Unicode, RawStr from storm.store import Store +class Cast(FuncExpr): + __slots__ = ("column", "type") + name = "CAST" + + def __init__(self, column, type): + self.column = column + self.type = type + +...@compile.when(Cast) +def compile_count(compile, cast, state): + state.push("context", EXPR) + column = compile(cast.column, state) + state.pop() + return "CAST(%s AS %s)" % (column, cast.type) + + class StormBuild(Build): __storm_table__ = "build" @@ -230,9 +247,9 @@ class StormCachingBuildResultStore(BuildResultStore): StormBuild.compiler == compiler, ] if revision is not None: - expr.append(StormBuild.revision == revision) + expr.append(Cast(StormBuild.revision, "TEXT") == revision) if checksum is not None: - expr.append(StormBuild.checksum == checksum) + expr.append(Cast(StormBuild.checksum, "TEXT") == checksum) result = self.store.find(StormBuild, *expr).order_by(Desc(StormBuild.upload_time)) ret = result.first() if ret is None: @@ -278,7 +295,7 @@ class StormCachingBuildFarm(BuildFarm): return distinct_builds(result.order_by(Desc(StormBuild.upload_time))) def get_tree_builds(self, tree): - result = self._get_store().find(StormBuild, StormBuild.tree == tree) + result = self._get_store().find(StormBuild, Cast(StormBuild.tree, "TEXT") == tree) return distinct_builds(result.order_by(Desc(StormBuild.upload_time))) def get_last_builds(self): diff --git a/buildfarm/web/__init__.py b/buildfarm/web/__init__.py index 77f1d1c..8c9aad6 100755 --- a/buildfarm/web/__init__.py +++ b/buildfarm/web/__init__.py @@ -118,7 +118,7 @@ def build_status_html(myself, build): "host": build.host, "tree": build.tree, "compiler": build.compiler, - "checksum": build.log_checksum() + "checksum": build.log_checksum(), } if build.revision: params["revision"] = build.revision @@ -381,7 +381,7 @@ class ViewBuildPage(BuildFarmPage): def show_oldrevs(self, myself, tree, host, compiler): """show the available old revisions, if any""" - old_builds = self.buildfarm.builds.get_old_builds(tree, host, compiler) + old_builds = self.buildfarm.builds.get_old_builds(tree, host, compiler) if not old_builds: return @@ -392,10 +392,11 @@ class ViewBuildPage(BuildFarmPage): yield "<thead><tr><th>Revision</th><th>Status</th><th>Age</th></tr></thead>\n" yield "<tbody>\n" - for build in old_builds: + for old_build in old_builds: yield "<tr><td>%s</td><td>%s</td><td>%s</td></tr>\n" % ( - revision_link(myself, build.revision, tree), - build_status_html(myself, build), util.dhm_time(build.age)) + revision_link(myself, old_build.revision, tree), + build_status_html(myself, old_build), + util.dhm_time(old_build.age)) yield "</tbody></table>\n" -- build.samba.org