def _email_callback(self, fileobj): try: email = parse_mail(fileobj) msg = get_message(email, new_queue=self.new_queue) if not msg: return txt = colourise(msg.for_irc()) # Simple flood/duplicate detection if txt in self.last_n_messages: return self.last_n_messages.insert(0, txt) self.last_n_messages = self.last_n_messages[:20] for channel in self.irc.state.channels: package_regex = self.registryValue( 'package_regex', channel, ) or 'a^' # match nothing by default package_match = re.search(package_regex, msg.package) maintainer_match = False maintainer_regex = self.registryValue( 'maintainer_regex', channel) if maintainer_regex: info = Maintainer().get_maintainer(msg.package) if info: maintainer_match = re.search(maintainer_regex, info['email']) if not package_match and not maintainer_match: continue distribution_regex = self.registryValue( 'distribution_regex', channel, ) if distribution_regex: if not hasattr(msg, 'distribution'): # If this channel has a distribution regex, don't # bother continuing unless the message actually has a # distribution. This filters security messages, etc. continue if not re.search(distribution_regex, msg.distribution): # Distribution doesn't match regex; don't send this # message. continue ircmsg = supybot.ircmsgs.privmsg(channel, txt) self.irc.queueMsg(ircmsg) except Exception as e: log.exception('Uncaught exception: %s ' % e)
class TestDatasourceTestingNewQueue(unittest.TestCase): def setUp(self): self.fixture = os.path.join(os.path.dirname(os.path.abspath(__file__)), \ 'fixtures', 'qa_page.html') self.datasource = Maintainer() def testInfo(self): info = self.datasource.get_maintainer('swi-prolog', fileobj=open(self.fixture)) self.assertEqual(info['email'], '*****@*****.**') self.assertEqual(info['name'], 'Chris Lamb')
class TestDatasourceMaintainer(unittest.TestCase): def setUp(self): self.fixture = os.path.join(os.path.dirname(os.path.abspath(__file__)), \ 'fixtures', 'qa_page.html') self.datasource = Maintainer() def testInfo(self): with open(self.fixture) as fileobj: info = self.datasource.get_maintainer('vlc', fileobj=fileobj) self.assertEqual(info['email'], '*****@*****.**') self.assertEqual(info['name'], 'Debian Multimedia Maintainers')
def _maintainer(self, irc, msg, args, items): for package in items: info = Maintainer().get_maintainer(package) if info: display_name = format_email_address("%s <%s>" % (info['name'], info['email']), max_domain=18) login = info['email'] if login.endswith('@debian.org'): login = login.replace('@debian.org', '') msg = "[desc]Maintainer for[reset] [package]%s[reset] [desc]is[reset] [by]%s[reset]: " % (package, display_name) msg += "[url]https://qa.debian.org/developer.php?login=%s[/url]" % login else: msg = 'Unknown source package "%s"' % package irc.reply(colourise(msg), prefixNick=False)
def setUp(self): self.fixture = os.path.join(os.path.dirname(os.path.abspath(__file__)), \ 'fixtures', 'qa_page.html') self.datasource = Maintainer()