| 50 |
self.db = security_db.DB(db_name) |
self.db = security_db.DB(db_name) |
| 51 |
self.register('', self.page_home) |
self.register('', self.page_home) |
| 52 |
self.register('*', self.page_object) |
self.register('*', self.page_object) |
| 53 |
|
self.register('redirect/*', self.page_redirect) |
| 54 |
self.register('source-package/*', self.page_source_package) |
self.register('source-package/*', self.page_source_package) |
| 55 |
self.register('binary-package/*', self.page_binary_package) |
self.register('binary-package/*', self.page_binary_package) |
| 56 |
self.register('status/release/stable', self.page_status_release_stable) |
self.register('status/release/stable', self.page_status_release_stable) |
| 120 |
|
|
| 121 |
def page_object(self, path, params, url): |
def page_object(self, path, params, url): |
| 122 |
obj = path[0] |
obj = path[0] |
| 123 |
|
return self.page_object_or_redirect(url, obj, False) |
| 124 |
|
|
| 125 |
|
def page_redirect(self, path, params, url): |
| 126 |
|
obj = path[0] |
| 127 |
|
return self.page_object_or_redirect(url, obj, True) |
| 128 |
|
|
| 129 |
|
def page_object_or_redirect(self, url, obj, redirect): |
| 130 |
|
c = self.db.cursor() |
| 131 |
|
|
| 132 |
if not obj: |
if not obj: |
| 133 |
# Redirect to start page. |
# Redirect to start page. |
| 135 |
|
|
| 136 |
if 'A' <= obj[0] <= 'Z': |
if 'A' <= obj[0] <= 'Z': |
| 137 |
# Bug names start with a capital letter. |
# Bug names start with a capital letter. |
| 138 |
return self.page_bug(url, obj) |
return self.page_bug(url, obj, redirect) |
| 139 |
|
|
| 140 |
bugnumber = 0 |
bugnumber = 0 |
| 141 |
try: |
try: |
| 143 |
except ValueError: |
except ValueError: |
| 144 |
pass |
pass |
| 145 |
if bugnumber: |
if bugnumber: |
| 146 |
return self.page_debian_bug(url, bugnumber) |
buglist = list(self.db.getBugsFromDebianBug(c, bugnumber)) |
| 147 |
|
if buglist: |
| 148 |
|
return self.page_debian_bug(url, bugnumber, buglist) |
| 149 |
|
if redirect: |
| 150 |
|
return RedirectResult(self.url_debian_bug(url, str(bugnumber)), |
| 151 |
|
permanent=False) |
| 152 |
|
|
|
c = self.db.cursor() |
|
| 153 |
if self.db.isSourcePackage(c, obj): |
if self.db.isSourcePackage(c, obj): |
| 154 |
return RedirectResult(self.url_source_package(url, obj, full=True)) |
return RedirectResult(self.url_source_package(url, obj, full=True)) |
| 155 |
if self.db.isBinaryPackage(c, obj): |
if self.db.isBinaryPackage(c, obj): |
| 157 |
|
|
| 158 |
return self.page_not_found(url, obj) |
return self.page_not_found(url, obj) |
| 159 |
|
|
| 160 |
def page_bug(self, url, name): |
def page_bug(self, url, name, redirect): |
| 161 |
cursor = self.db.cursor() |
cursor = self.db.cursor() |
| 162 |
try: |
try: |
| 163 |
bug = bugs.BugFromDB(cursor, name) |
bug = bugs.BugFromDB(cursor, name) |
| 164 |
except ValueError: |
except ValueError: |
| 165 |
|
if redirect: |
| 166 |
|
if name[0:4] in ('CAN-', 'CVE-'): |
| 167 |
|
return RedirectResult(self.url_cve(url, name), |
| 168 |
|
permanent=False) |
| 169 |
return self.page_not_found(url, name) |
return self.page_not_found(url, name) |
| 170 |
if bug.name <> name: |
if bug.name <> name or redirect: |
| 171 |
# Show the normalized bug name in the browser address bar. |
# Show the normalized bug name in the browser address bar. |
| 172 |
return RedirectResult(url.scriptRelativeFull(bug.name)) |
return RedirectResult(url.scriptRelativeFull(bug.name)) |
| 173 |
|
|
| 318 |
|
|
| 319 |
return self.create_page(url, bug.name, page) |
return self.create_page(url, bug.name, page) |
| 320 |
|
|
| 321 |
def page_debian_bug(self, url, bugnumber): |
def page_debian_bug(self, url, bugnumber, buglist): |
| 322 |
buglist = list(self.db.getBugsFromDebianBug(self.db.cursor(), |
if len(buglist) == 1: |
| 323 |
bugnumber)) |
# Single issue, redirect. |
| 324 |
if buglist: |
return RedirectResult(url.scriptRelativeFull(buglist[0][0])) |
| 325 |
if len(buglist) == 1: |
|
| 326 |
# Single issue, redirect. |
def gen(): |
| 327 |
return RedirectResult(url.scriptRelativeFull(buglist[0][0])) |
for (name, urgency, description) in buglist: |
| 328 |
|
if urgency == "unknown": |
| 329 |
def gen(): |
urgency = "" |
| 330 |
for (name, urgency, description) in buglist: |
yield self.make_xref(url, name), urgency, description |
| 331 |
if urgency == "unknown": |
|
| 332 |
urgency = "" |
return self.create_page( |
| 333 |
yield self.make_xref(url, name), urgency, description |
url, "Information related to Debian bug #%d" % bugnumber, |
| 334 |
|
[P("The following issues reference to Debian bug ", |
| 335 |
return self.create_page( |
self.make_debian_bug(url, bugnumber), ":"), |
| 336 |
url, "Information related to Debian bug #%d" % bugnumber, |
make_table(gen(), |
| 337 |
[P("The following issues reference to Debian bug ", |
caption=("Name", "Urgency", "Description"))]) |
|
self.make_debian_bug(url, bugnumber), ":"), |
|
|
make_table(gen(), |
|
|
caption=("Name", "Urgency", "Description"))]) |
|
|
|
|
|
else: |
|
|
return self.page_not_found(url, str(bugnumber)) |
|
| 338 |
|
|
| 339 |
def page_not_found(self, url, query): |
def page_not_found(self, url, query): |
| 340 |
return self.create_page(url, 'Not found', |
return self.create_page(url, 'Not found', |