From: Michael Tremer Date: Fri, 12 May 2023 10:28:23 +0000 (+0000) Subject: builds: Add page that shows groups X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ccae1b7604d52d7b49b0ac8679ff9c8bd845b9e4;p=pbs.git builds: Add page that shows groups Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index 7dec3625..a851be67 100644 --- a/Makefile.am +++ b/Makefile.am @@ -183,6 +183,9 @@ dist_templates_builds_DATA = \ templates_buildsdir = $(templatesdir)/builds +dist_templates_builds_groups_DATA = \ + src/templates/builds/groups/show.html + templates_builds_groupsdir = $(templates_buildsdir)/groups dist_templates_builds_groups_modules_DATA = \ diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index b63bc704..9131cec0 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -1018,6 +1018,19 @@ class Groups(base.Object): """, id, ) + def get_by_uuid(self, uuid): + return self._get_group(""" + SELECT + * + FROM + build_groups + WHERE + deleted_at IS NULL + AND + uuid = %s + """, uuid, + ) + def create(self, owner=None): """ Creates a new Build Group @@ -1040,9 +1053,15 @@ class Groups(base.Object): class Group(base.DataObject): table = "build_groups" + def __str__(self): + return self.uuid + def __iter__(self): return iter(self.builds) + def __bool__(self): + return True + def __len__(self): return len(self.builds) diff --git a/src/templates/builds/groups/show.html b/src/templates/builds/groups/show.html new file mode 100644 index 00000000..276d2d77 --- /dev/null +++ b/src/templates/builds/groups/show.html @@ -0,0 +1,33 @@ +{% extends "../../base.html" %} + +{% block title %}{{ _("Build Group %s") % group }}{% end block %} + +{% block body %} +
+
+ + +

{{ _("Build Group %s") % group }}

+ + {% if group.builds %} + {% module BuildsList(group.builds) %} + {% else %} +
+ {{ _("This build group does not have any builds") }} +
+ {% end %} +
+
+{% end block %} diff --git a/src/web/__init__.py b/src/web/__init__.py index 8d896e49..accb6948 100644 --- a/src/web/__init__.py +++ b/src/web/__init__.py @@ -138,6 +138,9 @@ class Application(tornado.web.Application): (r"/api/v1/builds", builds.APIv1IndexHandler), + # Build Groups + (r"/builds/groups/([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12})", builds.GroupShowHandler), + # Queue (r"/queue", jobs.QueueHandler), diff --git a/src/web/builds.py b/src/web/builds.py index 2d7c4b0f..8f0f027b 100644 --- a/src/web/builds.py +++ b/src/web/builds.py @@ -171,6 +171,15 @@ class CommentHandler(base.BaseHandler): self.redirect("/builds/%s" % build.uuid) +class GroupShowHandler(base.BaseHandler): + def get(self, uuid): + group = self.backend.builds.groups.get_by_uuid(uuid) + if not group: + raise tornado.web.HTTPError(404, "Could not find build group %s" % uuid) + + self.render("builds/groups/show.html", group=group) + + class ListModule(ui_modules.UIModule): def render(self, builds): return self.render_string("builds/modules/list.html", builds=builds)