diff --git a/Bugtracker/__init__.py b/Bugtracker/__init__.py index 8f4b9a0..9dc66c4 100644 --- a/Bugtracker/__init__.py +++ b/Bugtracker/__init__.py @@ -24,7 +24,7 @@ import supybot.world as world from imp import reload -__version__ = "4.0.1" +__version__ = "4.1.0" __author__ = supybot.Author("Krytarik Raido", "krytarik", "krytarik@tuxgarage.com") __contributors__ = { supybot.Author("Dennis Kaarsemaker", "Seveas", "dennis@kaarsemaker.net"): ['Original Author'], diff --git a/Bugtracker/config.py b/Bugtracker/config.py index b62a666..8195c7b 100644 --- a/Bugtracker/config.py +++ b/Bugtracker/config.py @@ -50,11 +50,13 @@ def configure(advanced): replyNoBugtracker = something("What should the bot reply with when a user requests information from an unknown bug tracker?", default=Bugtracker.replyNoBugtracker._default) snarfTarget = something("What should be the default bug tracker used when none is specified?", default=Bugtracker.snarfTarget._default) replyWhenNotFound = yn("Should the bot report when a bug is not found?", default=Bugtracker.replyWhenNotFound._default) + replyWhenError = yn("Should the bot report when an error occurs on getting a bug?", default=Bugtracker.replyWhenError._default) repeatdelay = getRepeatdelay() else: replyNoBugtracker = Bugtracker.replyNoBugtracker._default snarfTarget = Bugtracker.snarfTarget._default replyWhenNotFound = Bugtracker.replyWhenNotFound._default + replyWhenError = Bugtracker.replyWhenError._default repeatdelay = Bugtracker.repeatdelay._default showassignee = yn("Show the assignee of a bug in the reply?", default=Bugtracker.showassignee._default) @@ -68,6 +70,7 @@ def configure(advanced): Bugtracker.replyNoBugtracker.setValue(replyNoBugtracker) Bugtracker.snarfTarget.setValue(snarfTarget) Bugtracker.replyWhenNotFound.setValue(replyWhenNotFound) + Bugtracker.replyWhenError.setValue(replyWhenError) Bugtracker.repeatdelay.setValue(repeatdelay) Bugtracker.showassignee.setValue(showassignee) Bugtracker.extended.setValue(extended) @@ -104,6 +107,9 @@ conf.registerGroup(Bugtracker, 'bugtrackers', conf.registerGlobalValue(Bugtracker, 'replyWhenNotFound', registry.Boolean(False, """Whether to send a message when a bug could not be found""")) +conf.registerGlobalValue(Bugtracker, 'replyWhenError', + registry.Boolean(False, """Whether to send a message when an error occurred on getting a bug""")) + conf.registerChannelValue(Bugtracker, 'repeatdelay', registry.Integer(60, """Number of seconds to wait between repeated bug calls""")) diff --git a/Bugtracker/plugin.py b/Bugtracker/plugin.py index a2bf97b..354b951 100644 --- a/Bugtracker/plugin.py +++ b/Bugtracker/plugin.py @@ -429,9 +429,8 @@ class Bugtracker(callbacks.PluginRegexp): if self.registryValue('replyWhenNotFound'): irc.error("Could not find %s bug %d" % (tracker.description, bugid)) except BugtrackerError as e: - if not sure_bug and bugid < 30: - return - irc.error(str(e)) + if self.registryValue('replyWhenError') and sure_bug: + irc.error(str(e)) else: if report: irc.reply(report) @@ -457,11 +456,12 @@ class Bugtracker(callbacks.PluginRegexp): return report = self.get_bug(channel or msg.nick, tracker, 'url', bugid, self.registryValue('showassignee', channel), self.registryValue('extended', channel), do_url=False) - except BugtrackerError as e: - irc.error(str(e)) except BugNotFoundError: if self.registryValue('replyWhenNotFound'): irc.error("Could not find %s bug %s" % (tracker.description, match.group('bug'))) + except BugtrackerError as e: + if self.registryValue('replyWhenError'): + irc.error(str(e)) else: if report: irc.reply(report) @@ -692,9 +692,9 @@ class Bugzilla(IBugtracker): bug_n = zilladom.getElementsByTagName('bug')[0] if bug_n.hasAttribute('error'): errtxt = bug_n.getAttribute('error') - if errtxt == 'NotFound': + if errtxt in ('NotFound', 'InvalidBugId'): raise BugNotFoundError - s = 'Error getting %s bug #%d: %s' % (self.description, bugid, errtxt) + s = 'Could not get %s bug #%d: %s' % (self.description, bugid, errtxt) raise BugtrackerError(s) try: title = _getnodetxt(bug_n.getElementsByTagName('short_desc')[0])