]> git.ipfire.org Git - pbs.git/blobdiff - src/web/builds.py
builds: Show scratch builds for packages and enhance search
[pbs.git] / src / web / builds.py
index 120218047d737023ff727582b608044115754f6e..070594cd479cc6c054f3963b4afdeda5f8d302d8 100644 (file)
@@ -68,18 +68,19 @@ class IndexHandler(base.BaseHandler):
                limit  = self.get_argument_int("limit", None) or 25
 
                # Filters
+               name = self.get_argument("name", None)
                user = self.get_argument_user("user", None)
 
                # Fetch the most recent builds
                if user:
-                       builds = self.backend.builds.get_by_user(user, limit=limit, offset=offset)
+                       builds = user.get_builds(name, limit=limit, offset=offset)
                else:
-                       builds = self.backend.builds.get_recent(limit=limit, offset=offset)
+                       builds = self.backend.builds.get_recent(name=name, limit=limit, offset=offset)
 
                # Group builds by date
                builds = misc.group(builds, lambda build: build.created_at.date())
 
-               self.render("builds/index.html", builds=builds, user=user,
+               self.render("builds/index.html", builds=builds, name=name, user=user,
                        limit=limit, offset=offset)
 
 
@@ -197,7 +198,7 @@ class UnwatchHandler(base.BaseHandler):
 
 class CommentHandler(base.BaseHandler):
        @tornado.web.authenticated
-       def post(self, uuid):
+       async def post(self, uuid):
                build = self.backend.builds.get_by_uuid(uuid)
                if not build:
                        raise tornado.web.HTTPError(404, "Could not find build %s" % uuid)
@@ -206,7 +207,7 @@ class CommentHandler(base.BaseHandler):
 
                # Add a new comment to the build
                with self.db.transaction():
-                       build.comment(self.current_user, text)
+                       await build.comment(self.current_user, text)
 
                # Redirect to the build
                self.redirect("/builds/%s" % build.uuid)
@@ -293,10 +294,7 @@ class ReposAddHandler(base.BaseHandler):
 
                # Add the build to the repository
                with self.db.transaction():
-                       await repo.add_build(build, user=self.current_user, update=False)
-
-               # Update the repository in the background
-               self.backend.run_task(repo.update)
+                       await repo.add_build(build, user=self.current_user)
 
                self.redirect("/builds/%s" % build.uuid)
 
@@ -333,11 +331,7 @@ class ReposRemoveHandler(base.BaseHandler):
                # Remove build from all repositories
                with self.db.transaction():
                        for repo in repos:
-                               await repo.remove_build(build, user=self.current_user, update=False)
-
-               # Update all repositories in the background
-               for repo in repos:
-                       self.backend.run_task(repo.update)
+                               await repo.remove_build(build, user=self.current_user)
 
                self.redirect("/builds/%s" % build.uuid)
 
@@ -352,8 +346,15 @@ class GroupShowHandler(base.BaseHandler):
 
 
 class ListModule(ui_modules.UIModule):
-       def render(self, builds):
-               return self.render_string("builds/modules/list.html", builds=builds)
+       def render(self, builds, limit=None, more_url=None):
+               rest = None
+
+               # Limit builds
+               if limit:
+                       builds, rest = builds[:limit], builds[limit:]
+
+               return self.render_string("builds/modules/list.html", builds=builds,
+                       rest=rest, more_url=more_url)
 
 
 class GroupListModule(ui_modules.UIModule):