Fix Bugzilla/Issuezilla URLs (LP: #1019861)
As far as I can tell, IssueZilla and Bugzilla are API compatible (note)
This commit is contained in:
parent
fcbe5e92ec
commit
fbb7a7ae67
|
@ -63,6 +63,8 @@ def _getnodetxt(node):
|
||||||
for childnode in node.childNodes:
|
for childnode in node.childNodes:
|
||||||
if childnode.nodeType == childnode.TEXT_NODE:
|
if childnode.nodeType == childnode.TEXT_NODE:
|
||||||
L.append(childnode.data)
|
L.append(childnode.data)
|
||||||
|
if not L:
|
||||||
|
raise ValueError, "No text nodes"
|
||||||
val = ''.join(L)
|
val = ''.join(L)
|
||||||
if node.hasAttribute('encoding'):
|
if node.hasAttribute('encoding'):
|
||||||
encoding = node.getAttribute('encoding')
|
encoding = node.getAttribute('encoding')
|
||||||
|
@ -583,7 +585,7 @@ class IBugtracker:
|
||||||
|
|
||||||
class Bugzilla(IBugtracker):
|
class Bugzilla(IBugtracker):
|
||||||
def get_tracker(self, url):
|
def get_tracker(self, url):
|
||||||
url = url.replace('show_bug','xml')
|
url += '&ctype=xml'
|
||||||
try:
|
try:
|
||||||
bugxml = utils.web.getUrl(url)
|
bugxml = utils.web.getUrl(url)
|
||||||
tree = minidom.parseString(bugxml)
|
tree = minidom.parseString(bugxml)
|
||||||
|
@ -600,7 +602,7 @@ class Bugzilla(IBugtracker):
|
||||||
except:
|
except:
|
||||||
return None
|
return None
|
||||||
def get_bug(self, id):
|
def get_bug(self, id):
|
||||||
url = "%s/xml.cgi?id=%d" % (self.url,id)
|
url = "%s/show_bug.cgi?id=%d&ctype=xml" % (self.url,id)
|
||||||
try:
|
try:
|
||||||
bugxml = utils.web.getUrl(url)
|
bugxml = utils.web.getUrl(url)
|
||||||
zilladom = minidom.parseString(bugxml)
|
zilladom = minidom.parseString(bugxml)
|
||||||
|
@ -618,7 +620,7 @@ class Bugzilla(IBugtracker):
|
||||||
title = _getnodetxt(bug_n.getElementsByTagName('short_desc')[0])
|
title = _getnodetxt(bug_n.getElementsByTagName('short_desc')[0])
|
||||||
status = _getnodetxt(bug_n.getElementsByTagName('bug_status')[0])
|
status = _getnodetxt(bug_n.getElementsByTagName('bug_status')[0])
|
||||||
try:
|
try:
|
||||||
status += ": " + _getnodetxt(bug_n.getElementsByTagName('resolution')[0])
|
status = "%s: %s" % (status, _getnodetxt(bug_n.getElementsByTagName('resolution')[0]))
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
component = _getnodetxt(bug_n.getElementsByTagName('component')[0])
|
component = _getnodetxt(bug_n.getElementsByTagName('component')[0])
|
||||||
|
@ -633,35 +635,37 @@ class Bugzilla(IBugtracker):
|
||||||
raise BugtrackerError, s
|
raise BugtrackerError, s
|
||||||
return [(id, component, title, severity, status, assignee, "%s/show_bug.cgi?id=%d" % (self.url, id))]
|
return [(id, component, title, severity, status, assignee, "%s/show_bug.cgi?id=%d" % (self.url, id))]
|
||||||
|
|
||||||
class Issuezilla(IBugtracker):
|
class Issuezilla(Bugzilla):
|
||||||
def get_bug(self, id):
|
pass
|
||||||
url = "%s/xml.cgi?id=%d" % (self.url,id)
|
#class Issuezilla(IBugtracker):
|
||||||
try:
|
# def get_bug(self, id):
|
||||||
bugxml = utils.web.getUrl(url)
|
# url = "%s/show_bug.cgi?id=%d&ctype=xml" % (self.url,id)
|
||||||
zilladom = minidom.parseString(bugxml)
|
# try:
|
||||||
except Exception, e:
|
# bugxml = utils.web.getUrl(url)
|
||||||
s = 'Could not parse XML returned by %s: %s (%s)' % (self.description, e, url)
|
# zilladom = minidom.parseString(bugxml)
|
||||||
raise BugtrackerError, s
|
# except Exception, e:
|
||||||
bug_n = zilladom.getElementsByTagName('issue')[0]
|
# s = 'Could not parse XML returned by %s: %s (%s)' % (self.description, e, url)
|
||||||
if not (bug_n.getAttribute('status_code') == '200'):
|
# raise BugtrackerError, s
|
||||||
if bug_n.getAttribute('status_message') == 'NotFound':
|
# bug_n = zilladom.getElementsByTagName('issue')[0]
|
||||||
raise BugNotFoundError
|
# if not (bug_n.getAttribute('status_code') == '200'):
|
||||||
s = 'Error getting %s bug #%s: %s' % (self.description, id, bug_n.getAttribute('status_message'))
|
# if bug_n.getAttribute('status_message') == 'NotFound':
|
||||||
raise BugtrackerError, s
|
# raise BugNotFoundError
|
||||||
try:
|
# s = 'Error getting %s bug #%s: %s' % (self.description, id, bug_n.getAttribute('status_message'))
|
||||||
title = _getnodetxt(bug_n.getElementsByTagName('short_desc')[0])
|
# raise BugtrackerError, s
|
||||||
status = _getnodetxt(bug_n.getElementsByTagName('issue_status')[0])
|
# try:
|
||||||
try:
|
# title = _getnodetxt(bug_n.getElementsByTagName('short_desc')[0])
|
||||||
status += ": " + _getnodetxt(bug_n.getElementsByTagName('resolution')[0])
|
# status = _getnodetxt(bug_n.getElementsByTagName('issue_status')[0])
|
||||||
except:
|
# try:
|
||||||
pass
|
# status = "%s: %s" % (status, _getnodetxt(bug_n.getElementsByTagName('resolution')[0]))
|
||||||
component = _getnodetxt(bug_n.getElementsByTagName('component')[0])
|
# except:
|
||||||
severity = _getnodetxt(bug_n.getElementsByTagName('issue_type')[0])
|
# pass
|
||||||
assignee = _getnodetxt(bug_n.getElementsByTagName('assigned_to')[0])
|
# component = _getnodetxt(bug_n.getElementsByTagName('component')[0])
|
||||||
except Exception, e:
|
# severity = _getnodetxt(bug_n.getElementsByTagName('issue_type')[0])
|
||||||
s = 'Could not parse XML returned by %s bugzilla: %s (%s)' % (self.description, e, url)
|
# assignee = _getnodetxt(bug_n.getElementsByTagName('assigned_to')[0])
|
||||||
raise BugtrackerError, s
|
# except Exception, e:
|
||||||
return [(id, component, title, severity, status, assignee, "%s/show_bug.cgi?id=%d" % (self.url, id))]
|
# s = 'Could not parse XML returned by %s bugzilla: %s (%s)' % (self.description, e, url)
|
||||||
|
# raise BugtrackerError, s
|
||||||
|
# return [(id, component, title, severity, status, assignee, "%s/show_bug.cgi?id=%d" % (self.url, id))]
|
||||||
|
|
||||||
class Launchpad(IBugtracker):
|
class Launchpad(IBugtracker):
|
||||||
statuses = ["Unknown", "Invalid", "Opinion", "Won't Fix", "Fix Released", "Fix Committed", "New", "Incomplete", "Confirmed", "Triaged", "In Progress"]
|
statuses = ["Unknown", "Invalid", "Opinion", "Won't Fix", "Fix Released", "Fix Committed", "New", "Incomplete", "Confirmed", "Triaged", "In Progress"]
|
||||||
|
|
Loading…
Reference in New Issue