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"
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:
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):
"host": build.host,
"tree": build.tree,
"compiler": build.compiler,
- "checksum": build.log_checksum()
+ "checksum": build.log_checksum(),
}
if build.revision:
params["revision"] = build.revision
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
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"