core: make sure owner is never ignored. also simplify the logic flow in ignore checking.

Thanks m4v for the patch!
This commit is contained in:
Daniel Folkinshteyn 2011-11-21 15:09:38 -05:00 committed by Valentin Lorentz
parent 6d1cf739ab
commit a98b2df392

View File

@ -946,46 +946,30 @@ def checkIgnored(hostmask, recipient='', users=users, channels=channels):
Checks if the user is ignored by the recipient of the message. Checks if the user is ignored by the recipient of the message.
""" """
if ignores.checkIgnored(hostmask):
log.debug('Ignoring %s due to ignore database.', hostmask)
return True
try: try:
id = users.getUserId(hostmask) id = users.getUserId(hostmask)
user = users.getUser(id) user = users.getUser(id)
if user._checkCapability('owner'):
# Owners shouldn't ever be ignored.
return False
elif user.ignore:
log.debug('Ignoring %s due to his IrcUser ignore flag.', hostmask)
return True
except KeyError: except KeyError:
# If there's no user... # If there's no user...
if ircutils.isChannel(recipient): if conf.supybot.defaultIgnore():
channel = channels.getChannel(recipient) log.debug('Ignoring %s due to conf.supybot.defaultIgnore',
if channel.checkIgnored(hostmask): hostmask)
log.debug('Ignoring %s due to the channel ignores.', hostmask) return True
return True if ignores.checkIgnored(hostmask):
else: log.debug('Ignoring %s due to ignore database.', hostmask)
return False
else:
if conf.supybot.defaultIgnore():
log.debug('Ignoring %s due to conf.supybot.defaultIgnore',
hostmask)
return True
else:
return False
if user._checkCapability('owner'):
# Owners shouldn't ever be ignored.
return False
elif user.ignore:
log.debug('Ignoring %s due to his IrcUser ignore flag.', hostmask)
return True return True
elif recipient: if ircutils.isChannel(recipient):
if ircutils.isChannel(recipient): channel = channels.getChannel(recipient)
channel = channels.getChannel(recipient) if channel.checkIgnored(hostmask):
if channel.checkIgnored(hostmask): log.debug('Ignoring %s due to the channel ignores.', hostmask)
log.debug('Ignoring %s due to the channel ignores.', hostmask) return True
return True return False
else:
return False
else:
return False
else:
return False
def _x(capability, ret): def _x(capability, ret):
if isAntiCapability(capability): if isAntiCapability(capability):