[Secure-testing-commits] r28921 - bin lib/python
Holger Levsen
holger at moszumanska.debian.org
Sat Sep 20 07:39:35 UTC 2014
Author: holger
Date: 2014-09-20 07:39:34 +0000 (Sat, 20 Sep 2014)
New Revision: 28921
Modified:
bin/tracker_service.py
lib/python/security_db.py
Log:
rewrite DB.availableReleases() to make it possible to sort by release, subrelease and archive
Modified: bin/tracker_service.py
===================================================================
--- bin/tracker_service.py 2014-09-20 05:53:17 UTC (rev 28920)
+++ bin/tracker_service.py 2014-09-20 07:39:34 UTC (rev 28921)
@@ -1127,6 +1127,8 @@
sources = 'yes'
else:
sources = 'no'
+ if 'source' in archs:
+ archs.remove('source')
yield rel, subrel, archive, sources, make_list(archs)
return self.create_page(
url, "Available releases",
Modified: lib/python/security_db.py
===================================================================
--- lib/python/security_db.py 2014-09-20 05:53:17 UTC (rev 28920)
+++ lib/python/security_db.py 2014-09-20 07:39:34 UTC (rev 28921)
@@ -440,6 +440,14 @@
return -1
self.db.createscalarfunction("subrelease_to_number", subrelease_to_number, 1)
+ archives = ['main', 'contrib', 'non-free']
+ def archive_to_number(u):
+ try:
+ return archives.index(u)
+ except ValueError:
+ return -1
+ self.db.createscalarfunction("archive_to_number", archive_to_number, 1)
+
def release_name(release, subrelease, archive):
if archive <> 'main':
release = release + '/' + archive
@@ -451,6 +459,10 @@
self.db.createcollation("version", debian_support.version_compare)
+ def source_arch():
+ return "source"
+ self.db.createscalarfunction("source_arch", source_arch, 0)
+
def filePrint(self, filename):
"""Returns a fingerprint string for filename."""
@@ -848,25 +860,28 @@
if cursor is None:
cursor = self.cursor()
- releases = {}
- for r in cursor.execute(
- """SELECT DISTINCT release, subrelease, archive
- FROM source_packages"""):
- releases[r] = (True, [])
-
+ result = []
+ result.append(('', '', '', False, []))
for (rel, subrel, archive, archs) in cursor.execute(
- """SELECT DISTINCT release, subrelease, archive, archs
- FROM binary_packages"""):
- key = (rel, subrel, archive)
- if not releases.has_key(key):
- releases[key] = (False, [])
- releases[key][1][:] = mergeLists(releases[key][1], archs)
+ """SELECT * FROM
+ (SELECT DISTINCT release, subrelease, archive, archs
+ FROM binary_packages
+ UNION SELECT DISTINCT release, subrelease, archive, source_arch() as archs
+ FROM source_packages)
+ ORDER BY release_to_number(release), subrelease_to_number(subrelease), archive_to_number(archive)"""):
+ if "source" in archs:
+ sources=True
+ else:
+ sources=False
+ (p_rel, p_subrel, p_archive, p_sources, p_archs) = result.pop()
+ if rel == p_rel and subrel == p_subrel and archive == p_archive:
+ sources = sources or p_sources
+ result.append((rel, subrel, archive, sources, mergeLists(p_archs, archs)))
+ else:
+ result.append((p_rel, p_subrel, p_archive, p_sources, mergeLists([], p_archs)))
+ result.append((rel, subrel, archive, sources, mergeLists([], archs)))
+ result.pop(0)
- result = []
- for ((rel, subrel, archive), (sources, archs)) in releases.items():
- result.append((rel, subrel, archive, sources, archs))
- result.sort()
-
return result
def getFunnyPackageVersions(self):
More information about the Secure-testing-commits
mailing list