]> git.ipfire.org Git - pbs.git/commitdiff
packages: Group bugs by distribution
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 13 May 2023 11:41:01 +0000 (11:41 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 13 May 2023 11:41:01 +0000 (11:41 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/bugtracker.py
src/templates/packages/name.html
src/web/packages.py

index 677b84a8353fdd05e7da4f5ee7169ec469dc607b..c26025d3fabd88ff1fca6d637a17b3798cea354a 100644 (file)
@@ -46,10 +46,6 @@ class Bugzilla(base.Object):
                """
                return self.settings.get("bugzilla-url")
 
-       @property
-       def product(self):
-               return self.settings.get("bugzilla-product")
-
        async def get_products(self):
                """
                        Returns a dictionary with all products and versions
@@ -129,17 +125,19 @@ class Bugzilla(base.Object):
                """
                return self.make_url("/show_bug.cgi", id=id)
 
-       def enter_url(self, package):
+       def enter_url(self, component, product=None, version=None):
                """
                        Creates an URL to create a new bug for package
                """
-               return self.make_url("/enter_bug.cgi", product=self.product, component=package)
+               return self.make_url("/enter_bug.cgi", product=product, version=version,
+                       component=component)
 
-       def list_url(self, package):
+       def list_url(self, component, product=None, version=None):
                """
                        Creates an URL to list all bugs for package
                """
-               return self.make_url("/buglist.cgi", product=self.product, component=package)
+               return self.make_url("/buglist.cgi", product=product, version=version,
+                       component=component)
 
        async def version(self):
                """
index c763bfdb2a18f38350270d813e4280ac6d811893..868cab98feae82fdc2a7d404c7fc53c86dbf4513 100644 (file)
@@ -24,7 +24,7 @@
 
        <section class="section">
                <div class="container">
-                       {% for distro in backend.distros %}
+                       {% for distro in distros %}
                                <div class="block">
                                        <h3 class="title is-3">{{ distro }}</h3>
 
                        <div class="container">
                                <h4 class="title is-4">{{ _("Open Bugs") }}</h4>
 
-                               <div class="buttons are-small">
-                                       <a class="button is-info is-outlined" href="{{ backend.bugzilla.list_url(package.name) }}">
-                                               {{ _("Show All Bugs in Bugzilla") }}
-                                       </a>
+                               {% for distro in bugs %}
+                                       <h5 class="title is-5">{{ distro }}</h5>
 
-                                       <a class="button is-success" href="{{ backend.bugzilla.enter_url(package.name) }}">
-                                               {{ _("File A New Bug") }}
-                                       </a>
-                               </div>
+                                       <div class="block">
+                                               {% module BugsList(bugs[distro]) %}
+                                       </div>
+
+                                       <div class="buttons are-small">
+                                               <a class="button is-info is-outlined"
+                                                               href="{{ backend.bugzilla.list_url(package.name, **distro.bugzilla_fields) }}">
+                                                       {{ _("Show All Bugs in Bugzilla") }}
+                                               </a>
 
-                               {% module BugsList(bugs) %}
+                                               <a class="button is-success"
+                                                               href="{{ backend.bugzilla.enter_url(package.name, **distro.bugzilla_fields) }}">
+                                                       {{ _("File A New Bug") }}
+                                               </a>
+                                       </div>
+                               {% end %}
                        </div>
                </section>
        {% end %}
index c5ef43cc80ddefae830bd79387005f4aced18c08..6519770a5bb39ae4bc9e98e9a2108e72259d3e58 100644 (file)
@@ -1,5 +1,6 @@
 #!/usr/bin/python
 
+import asyncio
 import os.path
 import tornado.web
 
@@ -31,10 +32,16 @@ class NameHandler(base.BaseHandler):
                if not build:
                        raise tornado.web.HTTPError(404, "Package '%s' was not found" % name)
 
+               # Fetch all distributions
+               distros = self.backend.distros
+
                # Get the latest bugs from Bugzilla
-               bugs = await self.backend.bugzilla.search(component=name)
+               bugs = dict(zip(distros, await asyncio.gather(
+                       *(self.backend.bugzilla.search(component=name, **distro.bugzilla_fields)
+                               for distro in distros),
+               )))
 
-               self.render("packages/name.html", package=build.pkg, bugs=bugs)
+               self.render("packages/name.html", package=build.pkg, distros=distros, bugs=bugs)
 
 
 class ShowHandler(base.BaseHandler):