Bugtracker: Make SOAP trackers work on Python 3 too.

* Debian, and Mantis.
This commit is contained in:
Krytarik Raido 2018-03-11 08:04:04 +01:00
parent 29fffb3795
commit b7e49d1510
2 changed files with 14 additions and 19 deletions

View File

@ -24,7 +24,7 @@ import supybot.world as world
from imp import reload
__version__ = "3.2.0"
__version__ = "3.3.0"
__author__ = supybot.Author("Krytarik Raido", "krytarik", "krytarik@tuxgarage.com")
__contributors__ = {
supybot.Author("Dennis Kaarsemaker", "Seveas", "dennis@kaarsemaker.net"): ['Original Author'],

View File

@ -27,8 +27,7 @@ import supybot.log as supylog
import re, os, sys, time, json
import xml.dom.minidom as minidom
from email.parser import FeedParser
if sys.version_info < (3,0):
from SOAPpy.Client import SOAPProxy
from pysimplesoap.client import SoapClient
def registerBugtracker(name, url='', description='', trackertype=''):
conf.supybot.plugins.Bugtracker.bugtrackers().add(name)
@ -771,27 +770,24 @@ class Launchpad(IBugtracker):
# </rant>
class Debbugs(IBugtracker):
def __init__(self, *args, **kwargs):
if not sys.version_info < (3,0):
# XXX python3 does not have SOAPpy, so just quit here (for now)
return
IBugtracker.__init__(self, *args, **kwargs)
self.soap_proxy = SOAPProxy("%s/cgi-bin/soap.cgi" % self.url, namespace="Debbugs/SOAP")
self.soap_client = SoapClient("%s/cgi-bin/soap.cgi" % self.url, namespace="Debbugs/SOAP")
def get_bug(self, id):
url = "%s/cgi-bin/bugreport.cgi?bug=%d" % (self.url, id)
try:
raw = self.soap_proxy.get_status(id)
raw = self.soap_client.get_status(bugs=id)
except Exception as e:
raise BugtrackerError(self.errget % (self.description, e, url))
if not raw:
if not hasattr(raw, 'item'):
raise BugNotFoundError
try:
raw = raw['item']['value']
if raw['fixed_versions']:
raw = raw.item.value
if str(raw.fixed_versions):
status = 'Fixed'
else:
status = 'Open'
return (id, raw['package'], raw['subject'], raw['severity'], status, '', "%s/%d" % (self.url, id), [], [])
return (id, str(raw.package), str(raw.subject), str(raw.severity), status, '', "%s/%d" % (self.url, id), [], [])
except Exception as e:
raise BugtrackerError(self.errparse % (self.description, e, url))
@ -930,11 +926,8 @@ class Gitea(IBugtracker):
class Mantis(IBugtracker):
def __init__(self, *args, **kwargs):
if not sys.version_info < (3,0):
# XXX python3 does not have SOAPpy, so just quit here (for now)
return
IBugtracker.__init__(self, *args, **kwargs)
self.soap_proxy = SOAPProxy("%s/api/soap/mantisconnect.php" % self.url, namespace="http://futureware.biz/mantisconnect")
self.soap_client = SoapClient("%s/api/soap/mantisconnect.php" % self.url, namespace="http://futureware.biz/mantisconnect")
def get_tracker(self, url):
try:
@ -964,17 +957,19 @@ class Mantis(IBugtracker):
def get_bug_old(self, id): # Deprecated
url = "%s/view.php?id=%d" % (self.url, id)
try:
raw = self.soap_proxy.mc_issue_get('', '', id)
raw = self.soap_client.mc_issue_get(username='', password='', issue_id=id)
except Exception as e:
if 'Issue #%d not found' % id in str(e):
raise BugNotFoundError
# Often SOAP is not enabled
if '.' in self.name:
supylog.exception(self.errget % (self.description, e, url))
return
raise BugtrackerError(self.errget % (self.description, e, url))
if not raw:
if not hasattr(raw, 'id'):
raise BugNotFoundError
try:
return (id, raw['project']['name'], raw['summary'], raw['severity']['name'], raw['resolution']['name'], '', url, [], [])
return (id, str(raw.project.name), str(raw.summary), str(raw.severity.name), str(raw.resolution.name), '', url, [], [])
except Exception as e:
raise BugtrackerError(self.errparse % (self.description, e, url))