RSS: Add var supybot.plugins.RSS.maximumAnnounceHeadlines.

This commit is contained in:
Valentin Lorentz 2017-10-12 21:21:50 +02:00
parent 0998651f61
commit eaa5a5523e
3 changed files with 32 additions and 6 deletions

View File

@ -93,6 +93,9 @@ conf.registerGlobalValue(RSS, 'sortFeedItems',
conf.registerChannelValue(RSS, 'notice',
registry.Boolean(False, _("""Determines whether announces will be sent
as notices instead of privmsgs.""")))
conf.registerChannelValue(RSS, 'maximumAnnounceHeadlines',
registry.PositiveInteger(5, _("""Indicates how many new news entries may
be sent at the same time. Extra entries will be discarded.""")))
####################
# Headlines filtering

View File

@ -367,13 +367,12 @@ class RSS(callbacks.Plugin):
if feed.name not in self.registryValue('announce', channel):
continue
if initial:
n = self.registryValue('initialAnnounceHeadlines', channel)
if n:
announced_entries = new_entries[0:n]
else:
announced_entries = []
max_entries = \
self.registryValue('initialAnnounceHeadlines', channel)
else:
announced_entries = new_entries
max_entries = \
self.registryValue('maximumAnnounceHeadlines', channel)
announced_entries = new_entries[0:max_entries]
announced_entries = sort_feed_items(announced_entries, order)
for entry in announced_entries:
self.announce_entry(irc, channel, feed, entry)

View File

@ -134,6 +134,30 @@ class RSSTestCase(ChannelPluginTestCase):
self._feedMsg('rss remove xkcd')
feedparser._open_resource = old_open
def testMaxAnnounces(self):
old_open = feedparser._open_resource
feedparser._open_resource = constant(xkcd_old)
try:
self.assertError('rss announce add xkcd')
self.assertNotError('rss add xkcd http://xkcd.com/rss.xml')
self.assertNotError('rss announce add xkcd')
self.assertNotError(' ')
with conf.supybot.plugins.RSS.sortFeedItems.context('oldestFirst'):
with conf.supybot.plugins.RSS.waitPeriod.context(1):
with conf.supybot.plugins.RSS.maximumAnnounceHeadlines.context(1):
time.sleep(1.1)
self.assertNoResponse(' ')
self.assertNoResponse(' ')
feedparser._open_resource = constant(xkcd_new)
self.assertNoResponse(' ')
time.sleep(1.1)
self.assertRegexp(' ', 'Telescopes')
self.assertNoResponse(' ')
finally:
self._feedMsg('rss announce remove xkcd')
self._feedMsg('rss remove xkcd')
feedparser._open_resource = old_open
def testAnnounceAnonymous(self):
old_open = feedparser._open_resource
feedparser._open_resource = constant(xkcd_old)