[Secure-testing-commits] r3311 - bin

Florian Weimer fw at costa.debian.org
Tue Jan 17 18:46:15 UTC 2006


Author: fw
Date: 2006-01-17 18:46:14 +0000 (Tue, 17 Jan 2006)
New Revision: 3311

Modified:
   bin/tracker_service.py
Log:
bin/tracker_service.py (TrackerService.page_object_or_redirect):
  Handle FAKE-nnn objects.
(TrackerService.page_debian_bug):
  Make this method usable for dealing with FAKE-nnn objects.


Modified: bin/tracker_service.py
===================================================================
--- bin/tracker_service.py	2006-01-17 18:44:18 UTC (rev 3310)
+++ bin/tracker_service.py	2006-01-17 18:46:14 UTC (rev 3311)
@@ -188,24 +188,31 @@
         if not obj:
             # Redirect to start page.
             return RedirectResult(url.scriptRelativeFull(""))
-        
-        if 'A' <= obj[0] <= 'Z':
-            # Bug names start with a capital letter.
-            return self.page_bug(url, obj, redirect)
 
+        # Attempt to decode a bug number.  FAKE-nnn bugs (but not
+        # FAKE-nnn-mmm bugs) are treated as bug references, too.
         bugnumber = 0
+        fake_bug = False
         try:
-            bugnumber = int(obj)
+            if obj[0:5] == 'FAKE-':
+                bugnumber = int(obj[5:])
+                fake_bug = True
+            else:
+                bugnumber = int(obj)
         except ValueError:
             pass
         if bugnumber:
             buglist = list(self.db.getBugsFromDebianBug(c, bugnumber))
             if buglist:
-                return self.page_debian_bug(url, bugnumber, buglist)
+                return self.page_debian_bug(url, bugnumber, buglist, fake_bug)
             if redirect:
                 return RedirectResult(self.url_debian_bug(url, str(bugnumber)),
                                       permanent=False)
 
+        if 'A' <= obj[0] <= 'Z':
+            # Bug names start with a capital letter.
+            return self.page_bug(url, obj, redirect)
+
         if self.db.isSourcePackage(c, obj):
             return RedirectResult(self.url_source_package(url, obj, full=True))
         if  self.db.isBinaryPackage(c, obj):
@@ -396,7 +403,18 @@
 
         return self.create_page(url, bug.name, page)
 
-    def page_debian_bug(self, url, bugnumber, buglist):
+    def page_debian_bug(self, url, bugnumber, buglist, fake_bug):
+        if fake_bug:
+            new_buglist = []
+            for b in buglist:
+                (bug_name, urgency, description) = b
+                if bug_name[0:5] == "FAKE-":
+                    new_buglist.append(b)
+            if len(new_buglist) > 0:
+                # Only replace the bug list if there are still fake
+                # bug reports.
+                buglist = new_buglist
+
         if len(buglist) == 1:
             # Single issue, redirect.
             return RedirectResult(url.scriptRelativeFull(buglist[0][0]))
@@ -407,9 +425,16 @@
                     urgency = ""
                 yield self.make_xref(url, name), urgency, description
 
+        if fake_bug:
+            intro = """The URL you used contained a non-stable name
+based on a Debian bug number.  This name cannot be mapped to a specific
+issue. """
+        else:
+            intro = ""
+
         return self.create_page(
             url, "Information related to Debian bug #%d" % bugnumber,
-            [P("The following issues reference to Debian bug ",
+            [P(intro + "The following issues reference to Debian bug ",
                self.make_debian_bug(url, bugnumber), ":"),
              make_table(gen(),
                         caption=("Name", "Urgency", "Description"))])




More information about the Secure-testing-commits mailing list