summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorHolger Levsen <holger@debian.org>2014-10-03 07:36:29 +0000
committerHolger Levsen <holger@debian.org>2014-10-03 07:36:29 +0000
commite30eba6e3943d64443a4be586055f58edba4619e (patch)
tree6c7783cd74230f32abaa3a4d531f33ebdf273adb /lib
parent698487e68aca915352a46dea5e62a45667ee66e0 (diff)
Sort issues consistently in proper release+subrelease order. (Closes: #761889)
git-svn-id: svn+ssh://svn.debian.org/svn/secure-testing@29226 e39458fd-73e7-0310-bf30-c45bca0a0e42
Diffstat (limited to 'lib')
-rw-r--r--lib/python/security_db.py32
1 files changed, 26 insertions, 6 deletions
diff --git a/lib/python/security_db.py b/lib/python/security_db.py
index cf82518897..33400a056e 100644
--- a/lib/python/security_db.py
+++ b/lib/python/security_db.py
@@ -424,6 +424,26 @@ class DB:
return 999
self.db.createscalarfunction("urgency_to_number", urgency_to_number, 1)
+ def releasepart_to_number(r):
+ # expects a string in the form "wheezy (security)"
+ try:
+ u=r.split()[0]
+ return release_to_number(u)
+ except ValueError:
+ return -1
+ self.db.createscalarfunction("releasepart_to_number", releasepart_to_number, 1)
+
+ def subreleasepart_to_number(r):
+ # expects a string in the form "wheezy (security)"
+ try:
+ if not "(" in r:
+ return 0
+ u=r.split('(', 1)[1].split(')')[0]
+ return subrelease_to_number(u)
+ except ValueError:
+ return -1
+ self.db.createscalarfunction("subreleasepart_to_number", subreleasepart_to_number, 1)
+
releases = ['potato', 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy', 'jessie', 'sid']
def release_to_number(u):
try:
@@ -1596,7 +1616,8 @@ class DB:
AS release, version FROM source_packages
WHERE name = ?
AND release IN ('squeeze', 'wheezy', 'jessie', 'sid')
- ORDER BY release_to_number(release), subrelease_to_number(subrelease)""", (pkg,)):
+ GROUP BY release, version
+ ORDER BY release_to_number(release), subrelease_to_number(subrelease), version COLLATE version""", (pkg,)):
yield release, version
def getBinaryPackageVersions(self, cursor, pkg):
@@ -1629,7 +1650,7 @@ class DB:
FROM binary_packages
WHERE source = ?
GROUP BY name, release, subrelease, archive, version
- ORDER BY release_to_number(release), subrelease)
+ ORDER BY release_to_number(release), subrelease_to_number(subrelease))
GROUP BY package, version, archs
ORDER BY package)
GROUP BY releases, version, archs
@@ -1649,10 +1670,9 @@ class DB:
p.version AS version, s.vulnerable AS vulnerable
FROM source_package_status AS s, source_packages AS p
WHERE s.bug_name = ? AND p.rowid = s.package
- AND release in ('squeeze', 'wheezy', 'jessie', 'sid')
- ORDER BY release_to_number(p.release), p.subrelease)
+ AND release in ('squeeze', 'wheezy', 'jessie', 'sid'))
GROUP BY package, version, vulnerable
- ORDER BY package, version COLLATE version""",
+ ORDER BY releasepart_to_number(release), subreleasepart_to_number(release), package, version COLLATE version""",
(bug,)):
yield package, releases.split(', '), version, vulnerable
@@ -1706,7 +1726,7 @@ class DB:
AND (bugs.name LIKE 'CVE-%' OR bugs.name LIKE 'TEMP-%')
GROUP BY bugs.name, bugs.description, sp.name)
WHERE vulnerable = ? AND unimportant = ?
- ORDER BY name""", (pkg, vulnerable, unimportant))
+ ORDER BY name DESC""", (pkg, vulnerable, unimportant))
def getDSAsForSourcePackage(self, cursor, package):
return cursor.execute(

© 2014-2024 Faster IT GmbH | imprint | privacy policy