fix @baninfo, inform if the ban is inactive
This commit is contained in:
parent
c283e6b924
commit
401e5ae5d4
|
@ -362,6 +362,10 @@ class BanRemoval(object):
|
||||||
self.ban = Ban(args=(None, None, None, None, 0))
|
self.ban = Ban(args=(None, None, None, None, 0))
|
||||||
self.ban.deserialize(L[2:])
|
self.ban.deserialize(L[2:])
|
||||||
|
|
||||||
|
def enumerateReversed(L):
|
||||||
|
"""enumerate in reverse order"""
|
||||||
|
for i in reversed(xrange(len(L))):
|
||||||
|
yield i, L[i]
|
||||||
|
|
||||||
class BanStore(object):
|
class BanStore(object):
|
||||||
def __init__(self, filename):
|
def __init__(self, filename):
|
||||||
|
@ -406,11 +410,6 @@ class BanStore(object):
|
||||||
|
|
||||||
def popExpired(self, time=0):
|
def popExpired(self, time=0):
|
||||||
"""Pops a list of expired bans"""
|
"""Pops a list of expired bans"""
|
||||||
def enumerateReversed(L):
|
|
||||||
"""enumerate in reverse order"""
|
|
||||||
for i in reversed(xrange(len(L))):
|
|
||||||
yield i, L[i]
|
|
||||||
|
|
||||||
L = []
|
L = []
|
||||||
for i, ban in enumerateReversed(self.shelf):
|
for i, ban in enumerateReversed(self.shelf):
|
||||||
if ban.expired(offset=time):
|
if ban.expired(offset=time):
|
||||||
|
@ -915,11 +914,13 @@ class Bantracker(callbacks.Plugin):
|
||||||
self.db_run("UPDATE bans SET removal=%s , removal_op=%s WHERE id=%s", (now(), nick, int(data[0][0])))
|
self.db_run("UPDATE bans SET removal=%s , removal_op=%s WHERE id=%s", (now(), nick, int(data[0][0])))
|
||||||
if not channel in self.bans:
|
if not channel in self.bans:
|
||||||
self.bans[channel] = []
|
self.bans[channel] = []
|
||||||
for ban in self.bans[channel]:
|
for idx, ban in enumerateReversed(self.bans[channel]):
|
||||||
if ban.mask == mask:
|
if ban.mask == mask:
|
||||||
idx = self.bans[channel].index(ban)
|
|
||||||
del self.bans[channel][idx]
|
del self.bans[channel][idx]
|
||||||
# we don't break here because bans might be duplicated.
|
# we don't break here because bans might be duplicated.
|
||||||
|
for idx, br in enumerateReversed(self.managedBans.shelf):
|
||||||
|
if (channel == br.ban.channel) and (mask == br.ban.mask):
|
||||||
|
del self.managedBans.shelf[idx]
|
||||||
|
|
||||||
def doPrivmsg(self, irc, msg):
|
def doPrivmsg(self, irc, msg):
|
||||||
(recipients, text) = msg.args
|
(recipients, text) = msg.args
|
||||||
|
@ -1515,12 +1516,17 @@ class Bantracker(callbacks.Plugin):
|
||||||
irc.reply("[%s] %s - %s - %s - expires in %s" \
|
irc.reply("[%s] %s - %s - %s - expires in %s" \
|
||||||
% (id, type, mask, channel,
|
% (id, type, mask, channel,
|
||||||
(br.ban.when + br.expires) - nowSeconds()))
|
(br.ban.when + br.expires) - nowSeconds()))
|
||||||
else:
|
return
|
||||||
if type in ('quiet', 'ban'):
|
|
||||||
|
if type in ('quiet', 'ban'):
|
||||||
|
if not removal:
|
||||||
irc.reply("[%s] %s - %s - %s - never expires" \
|
irc.reply("[%s] %s - %s - %s - never expires" \
|
||||||
% (id, type, mask, channel))
|
% (id, type, mask, channel))
|
||||||
else:
|
else:
|
||||||
irc.reply("[%s] %s - %s - %s" % (id, type, mask, channel))
|
irc.reply("[%s] %s - %s - %s - not active" \
|
||||||
|
% (id, type, mask, channel))
|
||||||
|
else:
|
||||||
|
irc.reply("[%s] %s - %s - %s" % (id, type, mask, channel))
|
||||||
|
|
||||||
|
|
||||||
baninfo = wrap(baninfo, ['id'])
|
baninfo = wrap(baninfo, ['id'])
|
||||||
|
|
|
@ -453,5 +453,8 @@ class BantrackerTestCase(ChannelPluginTestCase):
|
||||||
self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - never expires')
|
self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - never expires')
|
||||||
self.assertNotError('banremove 1 10')
|
self.assertNotError('banremove 1 10')
|
||||||
self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - expires in 10.0')
|
self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - expires in 10.0')
|
||||||
|
self.irc.feedMsg(ircmsgs.unban(self.channel, 'asd!*@*',
|
||||||
|
'op!user@host.net'))
|
||||||
|
self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - not active')
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue