Author: fw
Date: 2005-10-20 09:01:15 +0000 (Thu, 20 Oct 2005)
New Revision: 2478
Modified:
bin/tracker.cgi
lib/python/security_db.py
Log:
r304@deneb: fw | 2005-10-01 11:19:27 +0200
Add overview page for the stable suite.
bin/tracker.cgi (print_stable_status):
New function.
lib/python/security_db.py (DB.initSchema):
Add stable_status view.
Modified: bin/tracker.cgi
==================================================================---
bin/tracker.cgi 2005-10-20 09:00:51 UTC (rev 2477)
+++ bin/tracker.cgi 2005-10-20 09:01:15 UTC (rev 2478)
@@ -648,7 +648,9 @@
<h2>Starting points</h2>
"""
- print_menu([(''status/release/testing'',
+ print_menu([(''status/release/stable'',
+ ''Vulnerable packages in the stable suite''),
+ (''status/release/testing'',
''Vulnerable packages in the testing suite''),
(''status/release/unstable'',
''Vulnerable packages in the unstable
suite''),
@@ -843,6 +845,34 @@
print_footer()
+ def print_stable_status():
+ db = security_db.DB(''../data/security.db'')
+
+ print_title("Vulnerable source packages in stable")
+
+ def gen():
+ old_pkg_name = ''''
+ for (pkg_name, bug_name, archive, urgency) in db.cursor().execute(
+ """SELECT package, bug, section, urgency
+ FROM stable_status"""):
+ if pkg_name == old_pkg_name:
+ pkg_name = ''''
+ else:
+ old_pkg_name = pkg_name
+ if archive <> ''main'':
+ pkg_name = "%s (%s)" % (pkg_name, archive)
+
+ if urgency == ''unknown'':
+ urgency = ''''
+ elif urgency == ''high'':
+ urgency = make_red(urgency)
+
+ yield pkg_name, make_xref(bug_name), urgency
+
+ print_table(gen(), caption=("Package", "Bug",
"Urgency"))
+
+ print_footer()
+
def print_testing_status():
db = security_db.DB(''../data/security.db'')
@@ -1009,6 +1039,7 @@
''/data/funny-versions'' :
print_funny_versions,
''/data/missing-epochs'' :
print_missing_epochs,
''/data/unknown-packages'' :
print_unknown_packages,
+ ''/status/release/stable'' :
print_stable_status,
''/status/release/testing'' :
print_testing_status,
''/status/release/unstable'' :
print_unstable_status,
''/status/todo'' : print_todo,
Modified: lib/python/security_db.py
==================================================================---
lib/python/security_db.py 2005-10-20 09:00:51 UTC (rev 2477)
+++ lib/python/security_db.py 2005-10-20 09:01:15 UTC (rev 2478)
@@ -93,7 +93,7 @@
self.db = apsw.Connection(name)
self.verbose = verbose
- self.schema_version = 12
+ self.schema_version = 13
self._initFunctions()
c = self.cursor()
@@ -288,6 +288,24 @@
AND sp.subrelease = ''''
ORDER BY sp.name, urgency_to_number(st.urgency),
st.bug_name""")
+ cursor.execute(
+ """CREATE VIEW stable_status AS
+ SELECT DISTINCT sp.name AS package, st.bug_name AS bug,
+ sp.archive AS section, st.urgency AS urgency
+ FROM source_package_status AS st, source_packages AS sp
+ WHERE st.vulnerable AND st.urgency <>
''unimportant''
+ AND sp.rowid = st.package AND sp.release =
''sarge''
+ AND sp.subrelease = ''''
+ AND NOT COALESCE((SELECT NOT vulnerable
+ FROM source_packages AS secp, source_package_status AS secst
+ WHERE secp.name = sp.name
+ AND secp.release = ''sarge'' AND secp.subrelease =
''security''
+ AND secp.archive = sp.archive
+ AND secst.bug_name = st.bug_name
+ AND secst.package = secp.rowid), 0)
+ ORDER BY sp.name, urgency_to_number(urgency),
st.bug_name""")
+
+
cursor.execute("PRAGMA user_version = %d" %
self.schema_version)
def _initFunctions(self):
@@ -1285,14 +1303,21 @@
"""Returns a generator for a list of (BUG, DESCRIPTION)
pairs
which have the requested status."""
return cursor.execute(
- """SELECT name, description
+ """SELECT DISTINCT name, description
FROM (SELECT bugs.name AS name, bugs.description AS description,
- MAX(st.vulnerable) AS vulnerable
+ MAX(st.vulnerable
+ AND COALESCE((SELECT st2.vulnerable FROM source_packages AS sp2,
+ source_package_status AS st2
+ WHERE sp2.name = sp.name AND sp2.release = sp.release
+ AND sp2.subrelease = ''security'' AND sp2.archive =
sp.archive
+ AND st2.package = sp2.rowid AND st2.bug_name = st.bug_name
+ ORDER BY st2.vulnerable DESC), 1)) AS vulnerable
FROM source_packages AS sp, source_package_status AS st, bugs
- WHERE sp.name = ? AND st.package = sp.rowid
+ WHERE sp.name = ? AND sp.subrelease <>
''security''
+ AND st.package = sp.rowid
AND bugs.name = st.bug_name
AND st.urgency <> ''unimportant''
- GROUP BY bugs.name, bugs.description)
+ GROUP BY bugs.name, bugs.description, sp.name)
WHERE vulnerable = ?
ORDER BY name""", (pkg, vulnerable))