[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#742855: Sort releases correctly in tabular view. (Closes: #742855)



Hi Salvatore,

On Samstag, 13. September 2014, Salvatore Bonaccorso wrote:
> I tested the patch in my local instance. 

yeah, it's clearly the wrong patch, I attached, sorry.

> libspring-java as by now, might change in future, shows right now:
> This should be ordered (and for future releases):
> 
> Bug           | wheezy     | jessie     | sid        | Description

the instance here does so, and it also orders them within releases by '', 
'security', 'lts' :)

And that's the patch posted for #742382, which I've attached for clarity.

Regarding the patch I accidently send to this bug:

> I tested the patch in my local instance. It does sort now the CVEs in
> descending order, which was not what I meant. We had so far the oldest
> CVEs on top which this patch would changes.

I think this should still be done, newer stuff is usually more interesting (so 
here) and should thus be displayed on top. The reasoning "because it has been 
like this since always" is not so convincing.


cheers,
	Holger

cheers,
	Holger
From 808d4d51b67cfdddd8a756c3bfbd290c2ade2d8a Mon Sep 17 00:00:00 2001
From: Holger Levsen <holger@layer-acht.org>
Date: Sat, 13 Sep 2014 01:47:11 +0200
Subject: [PATCH] Display oldstable/stable security and olstable-lts
 repositories in tabular view. (Closes: #742382)

---
 bin/tracker_service.py    | 13 ++++++-------
 lib/python/security_db.py | 19 +++++++++++++------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/bin/tracker_service.py b/bin/tracker_service.py
index fb3fd27..48ad599 100644
--- a/bin/tracker_service.py
+++ b/bin/tracker_service.py
@@ -545,19 +545,18 @@ to improve our documentation and procedures, so feedback is welcome.""")])])
         pkg = path[0]
 
         def gen_versions():
-            for (releases, version) in self.db.getSourcePackageVersions(
-                self.db.cursor(), pkg):
-                yield ', '.join(releases), version
+            for (release, version) in self.db.getSourcePackageVersions(
+                    self.db.cursor(), pkg):
+                yield release, version
         def gen_bug_list(lst):
             for (bug, description) in lst:
                 yield self.make_xref(url, bug), description
 
         suites = ()
-        for (releases, version) in self.db.getSourcePackageVersions(
+        for (release, version) in self.db.getSourcePackageVersions(
             self.db.cursor(), pkg):
-            for r in releases:
-                if r not in suites:
-                    suites = suites + (r,)
+                if release not in suites:
+                    suites = suites + (release,)
 
         def gen_summary(bugs):
             for (bug, description) in bugs:
diff --git a/lib/python/security_db.py b/lib/python/security_db.py
index 8831079..8316ef9 100644
--- a/lib/python/security_db.py
+++ b/lib/python/security_db.py
@@ -432,6 +432,14 @@ class DB:
                 return -1
         self.db.createscalarfunction("release_to_number", release_to_number, 1)
 
+        subreleases = ['', 'security', 'lts']
+        def subrelease_to_number(u):
+            try:
+                return subreleases.index(u)
+            except ValueError:
+                return -1
+        self.db.createscalarfunction("subrelease_to_number", subrelease_to_number, 1)
+
         def release_name(release, subrelease, archive):
             if archive <> 'main':
                 release = release + '/' + archive
@@ -1566,14 +1574,13 @@ class DB:
         """A generator which returns tuples (RELEASE-LIST, VERSION),
         the available versions of the source package pkg."""
 
-        for (releases, version) in cursor.execute(
-            """SELECT string_list(release) AS releases, version
-            FROM (SELECT release, version FROM source_packages
+        for (release, version) in cursor.execute(
+            """SELECT release_name(release, subrelease, archive)
+            AS release, version FROM source_packages
             WHERE name = ?
             AND release IN ('squeeze', 'wheezy', 'jessie', 'sid')
-            ORDER BY release_to_number(release))
-            GROUP BY version""", (pkg,)):
-            yield releases.split(', '), version
+            ORDER BY release_to_number(release), subrelease_to_number(subrelease)""", (pkg,)):
+            yield release, version
 
     def getBinaryPackageVersions(self, cursor, pkg):
         """A generator which returns tuples (RELEASE-LIST,
-- 
1.9.1

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: