Re: Proposed refactoring of the per-release tracker pages
On Sat, 9 Jan 2010 23:34:26 -0500 Michael Gilbert wrote:
> On Thu, 7 Jan 2010 23:02:59 -0500 Michael Gilbert wrote:
>
> > Hi all,
> >
> > In order to address some usability, clutter, and transparancy issues
> > with the tracker, I propose to make the following changes:
> [...]
>
> Hi all,
>
> Attached is a patch for the proposed refactoring (after taking into
> account feedback and discussion). See attached.
And here is a patch for the new undetermined and unimportant pages for
your review.
Mike
diff --git a/bin/tracker_service.py b/bin/tracker_service.py
index 7c18888..de149dc 100644
--- a/bin/tracker_service.py
+++ b/bin/tracker_service.py
@@ -134,6 +134,8 @@ function onSearch(query) {
self.register('status/dtsa-candidates',
self.page_status_dtsa_candidates)
self.register('status/todo', self.page_status_todo)
+ self.register('status/undetermined', self.page_status_undetermined)
+ self.register('status/unimportant', self.page_status_unimportant)
self.register('status/itp', self.page_status_itp)
self.register('data/unknown-packages', self.page_data_unknown_packages)
self.register('data/missing-epochs', self.page_data_missing_epochs)
@@ -192,6 +194,8 @@ aware of and/or help us improve the quality of this information by """,
'Vulnerable packages in backports for oldstable'),
('status/dtsa-candidates', "Candidates for DTSAs"),
('status/todo', 'TODO items'),
+ ('status/undetermined', 'Packages with undetermined issues'),
+ ('status/unimportant', 'Packages with unimportant issues'),
('status/itp', 'ITPs with potential security issues'),
('data/unknown-packages',
'Packages names not found in the archive'),
@@ -896,9 +900,97 @@ checker to find out why they have not entered testing yet."""),
yield self.make_xref(url, bug), description
return self.create_page(
url, "Bugs with TODO items",
- [P(flags),
- make_table(gen(),
- caption=("Bug", "Description"))])
+ [P(flags), make_table(gen(), caption=("Bug", "Description"))])
+
+ def page_status_undetermined(self, path, params, url):
+ def gen():
+ outrel = []
+ old_bug = ''
+ old_pkg = ''
+ old_dsc = ''
+ last_displayed = ''
+ releases = ('sid', 'squeeze', 'lenny', 'etch')
+ for (pkg_name, bug_name, release, desc) in self.db.cursor().execute(
+ """SELECT DISTINCT sp.name, st.bug_name, sp.release,
+ bugs.description
+ FROM source_package_status AS st, source_packages AS sp, bugs
+ WHERE st.vulnerable == 2 AND sp.rowid = st.package
+ AND ( sp.release = ? OR sp.release = ? OR sp.release = ?
+ OR sp.release = ? )
+ AND sp.subrelease = '' AND st.bug_name == bugs.name
+ ORDER BY sp.name, st.bug_name""", releases):
+
+ print pkg_name, bug_name, release
+ if old_bug == '':
+ old_bug = bug_name
+ old_pkg = pkg_name
+ old_dsc = desc
+ elif old_bug != bug_name:
+ if old_pkg == last_displayed:
+ to_display = ''
+ else:
+ to_display = old_pkg
+ yield to_display, self.make_xref(url, old_bug), old_dsc, ', '.join(outrel)
+ last_displayed = old_pkg
+ old_bug = bug_name
+ old_pkg = pkg_name
+ old_dsc = desc
+ outrel = []
+ outrel.append( release )
+ yield old_pkg, self.make_xref(url, old_bug), old_dsc, ', '.join(outrel)
+
+ return self.create_page(url, 'Packages with undetermined issues',
+ [P("""This page lists packages that may or may not be affected
+ by the issues in the following table. This means that some
+ additional work needs to be done to determined whether the
+ package. This list is a good area for new contributors to
+ make quick and meaningful contributions."""),
+ make_table(gen(), caption=('Package', 'Bug', 'Description', 'Releases'))])
+
+ def page_status_unimportant(self, path, params, url):
+ def gen():
+ outrel = []
+ old_bug = ''
+ old_pkg = ''
+ old_dsc = ''
+ old_name = ''
+ last_displayed = ''
+ releases = ('sid', 'squeeze', 'lenny', 'etch')
+ for (pkg_name, bug_name, release, desc) in self.db.cursor().execute(
+ """SELECT DISTINCT sp.name, st.bug_name, sp.release,
+ bugs.description
+ FROM source_package_status AS st, source_packages AS sp, bugs
+ WHERE st.vulnerable > 0 AND sp.rowid = st.package
+ AND ( sp.release = ? OR sp.release = ? OR sp.release = ?
+ OR sp.release = ? ) AND st.urgency == 'unimportant'
+ AND sp.subrelease = '' AND st.bug_name == bugs.name
+ ORDER BY sp.name, st.bug_name""", releases):
+
+ if old_bug == '':
+ old_bug = bug_name
+ old_pkg = pkg_name
+ old_dsc = desc
+ elif old_bug != bug_name:
+ if old_pkg == last_displayed:
+ to_display = ''
+ else:
+ to_display = old_pkg
+ yield to_display, self.make_xref(url, old_bug), old_dsc, ', '.join(outrel)
+ last_displayed = old_pkg
+ old_bug = bug_name
+ old_pkg = pkg_name
+ old_dsc = desc
+ outrel = []
+ outrel.append( release )
+ yield old_pkg, self.make_xref(url, old_bug), old_dsc, ', '.join(outrel)
+
+ return self.create_page(url, 'Packages with unimportant issues',
+ [P("""This page lists packages that are affected by issues
+ that are considered unimportant from a security perspective.
+ This means that the issue is thought to be unexploitable or
+ uneffective in most situations (such as a browser
+ denial-of-service)."""),
+ make_table(gen(), caption=('Package', 'Bug', 'Description', 'Releases'))])
def page_status_itp(self, path, params, url):
def gen():
Reply to: