diff options
author | Holger Levsen <holger@debian.org> | 2014-10-03 07:36:29 +0000 |
---|---|---|
committer | Holger Levsen <holger@debian.org> | 2014-10-03 07:36:29 +0000 |
commit | e30eba6e3943d64443a4be586055f58edba4619e (patch) | |
tree | 6c7783cd74230f32abaa3a4d531f33ebdf273adb /lib | |
parent | 698487e68aca915352a46dea5e62a45667ee66e0 (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.py | 32 |
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( |