[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: