From: Michael Tremer Date: Fri, 15 Feb 2013 14:05:21 +0000 (+0100) Subject: Only show active builds on package overview. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fd0e70ecf3f1503aafb8dd6288e1e3f0e82d8d8e;p=pbs.git Only show active builds on package overview. --- diff --git a/backend/builds.py b/backend/builds.py index e67be2fa..317f5354 100644 --- a/backend/builds.py +++ b/backend/builds.py @@ -166,6 +166,34 @@ class Builds(base.Object): return builds[0] + def get_active_builds(self, name, public=None): + query = "\ + SELECT builds.* FROM builds \ + LEFT JOIN packages ON builds.pkg_id = packages.id \ + WHERE packages.name = %s" + args = [name,] + + if public is True: + query += " AND builds.public = %s" + args.append("Y") + elif public is False: + query += " AND builds.public = %s" + args.append("N") + + query += " AND builds.id IN ( \ + SELECT build_id FROM repositories_builds \ + )" + + builds = [] + for row in self.db.query(query, *args): + b = Build(self.pakfire, row.id, row) + builds.append(b) + + # Sort the result. Lastest build first. + builds.sort(reverse=True) + + return builds + def count(self): count = self.cache.get("builds_count") if count is None: diff --git a/data/templates/package-detail-list.html b/data/templates/package-detail-list.html index eefd720c..e1a2cf95 100644 --- a/data/templates/package-detail-list.html +++ b/data/templates/package-detail-list.html @@ -50,7 +50,7 @@
- {% module Changelog(name=name, limit=2) %} + {% module Changelog(builds=builds) %}

{{ _("Full changelog") }} diff --git a/web/handlers_packages.py b/web/handlers_packages.py index 6e68a034..a774daf8 100644 --- a/web/handlers_packages.py +++ b/web/handlers_packages.py @@ -50,20 +50,18 @@ class PackageListHandler(BaseHandler): class PackageNameHandler(BaseHandler): def get(self, name): - latest_build = self.pakfire.builds.get_latest_by_name(name, public=self.public) - - if not latest_build: + builds = self.pakfire.builds.get_active_builds(name, public=self.public) + if not builds: raise tornado.web.HTTPError(404, "Package '%s' was not found" % name) - # Get the average build times of this package. - build_times = self.pakfire.packages.get_avg_build_times(name) + # Get the latest build to show the package meta information. + latest_build = builds[0] # Get the latest bugs from bugzilla. bugs = self.pakfire.bugzilla.get_bugs_from_component(name) - self.render("package-detail-list.html", name=name, - latest_build=latest_build, pkg=latest_build.pkg, - build_times=build_times, bugs=bugs) + self.render("package-detail-list.html", name=name, builds=builds, + latest_build=latest_build, pkg=latest_build.pkg, bugs=bugs) class PackageChangelogHandler(BaseHandler):