From: Michael Tremer Date: Wed, 22 Jun 2022 09:25:54 +0000 (+0000) Subject: builds: Refactor index handler X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75f80d943c6a37e1a1887a2f0312beddba79451d;p=pbs.git builds: Refactor index handler Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index f4bd8571..2c9f9e13 100644 --- a/Makefile.am +++ b/Makefile.am @@ -150,7 +150,6 @@ dist_templates_DATA = \ src/templates/build-bugs.html \ src/templates/build-delete.html \ src/templates/build-filter.html \ - src/templates/build-index.html \ src/templates/build-list.html \ src/templates/build-manage.html \ src/templates/build-priority.html \ @@ -209,6 +208,7 @@ templates_buildersdir = $(templatesdir)/builders dist_templates_builds_DATA = \ src/templates/builds/comments.html \ + src/templates/builds/index.html \ src/templates/builds/show.html templates_buildsdir = $(templatesdir)/builds diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index 65fb060a..42fe985e 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -28,11 +28,6 @@ class Builds(base.Object): for row in res: yield Build(self.backend, row.id, data=row) - def __iter__(self): - builds = self._get_builds("SELECT * FROM builds ORDER BY time_created DESC") - - return iter(builds) - def get_by_id(self, id, data=None): return Build(self.backend, id, data=data) @@ -122,6 +117,23 @@ class Builds(base.Object): name, ) + def get_recent(self, limit=None): + """ + Returns the most recent builds + """ + builds = self._get_builds(""" + SELECT + * + FROM + builds + ORDER BY + time_created DESC + LIMIT %s""", + limit, + ) + + return list(builds) + def get_obsolete(self, repo=None): """ Get all obsoleted builds. diff --git a/src/templates/build-index.html b/src/templates/builds/index.html similarity index 97% rename from src/templates/build-index.html rename to src/templates/builds/index.html index 3eb4dd0f..a19591cf 100644 --- a/src/templates/build-index.html +++ b/src/templates/builds/index.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "../base.html" %} {% block title %}{{ _("Builds") }}{% end block %} diff --git a/src/web/__init__.py b/src/web/__init__.py index 02f65f66..2df8973b 100644 --- a/src/web/__init__.py +++ b/src/web/__init__.py @@ -124,7 +124,7 @@ class Application(tornado.web.Application): (r"/file/([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12})", FileDetailHandler), # Builds - (r"/builds", builds.BuildsHandler), + (r"/builds", builds.IndexHandler), (r"/builds/comments", builds.BuildsCommentsHandler), (r"/builds/comments/(\w+)", builds.BuildsCommentsHandler), (r"/builds/([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12})", builds.ShowHandler), diff --git a/src/web/builds.py b/src/web/builds.py index a6daa253..e1141e75 100644 --- a/src/web/builds.py +++ b/src/web/builds.py @@ -4,24 +4,6 @@ import tornado.web from . import base -class BuildsHandler(base.BaseHandler): - def get(self): - limit = self.get_argument("limit", None) - try: - limit = int(limit) - except (TypeError, ValueError): - limit = 25 - - builds = [] - for build in self.backend.builds: - builds.append(build) - - limit -= 1 - if not limit: - break - - self.render("build-index.html", builds=builds) - class BuildBaseHandler(base.BaseHandler): def get_build(self, uuid): @@ -32,6 +14,14 @@ class BuildBaseHandler(base.BaseHandler): return build +class IndexHandler(base.BaseHandler): + def get(self): + # Fetch the most recent builds + builds = self.backend.builds.get_recent(limit=25) + + self.render("builds/index.html", builds=builds) + + class ShowHandler(BuildBaseHandler): def get(self, uuid): build = self.backend.builds.get_by_uuid(uuid)