mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-03-11 08:50:43 +01:00
Add arguments ignoreChannelOp and ignoreDefaultAllow to ircdb.checkCapability.
This commit is contained in:
parent
f1c13054fe
commit
233571e4b5
20
src/ircdb.py
20
src/ircdb.py
@ -136,7 +136,7 @@ class CapabilitySet(set):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def check(self, capability):
|
def check(self, capability, ignoreOwner=False):
|
||||||
"""Returns the appropriate boolean for whether a given capability is
|
"""Returns the appropriate boolean for whether a given capability is
|
||||||
'allowed' given its (or its anticapability's) presence in the set.
|
'allowed' given its (or its anticapability's) presence in the set.
|
||||||
"""
|
"""
|
||||||
@ -244,7 +244,7 @@ class IrcUser(object):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return self.capabilities.check(capability, ignoreOwner)
|
return self.capabilities.check(capability, ignoreOwner=ignoreOwner)
|
||||||
|
|
||||||
def setPassword(self, password, hashed=False):
|
def setPassword(self, password, hashed=False):
|
||||||
"""Sets the user's password."""
|
"""Sets the user's password."""
|
||||||
@ -440,11 +440,11 @@ class IrcChannel(object):
|
|||||||
"""Sets the default capability in the channel."""
|
"""Sets the default capability in the channel."""
|
||||||
self.defaultAllow = b
|
self.defaultAllow = b
|
||||||
|
|
||||||
def _checkCapability(self, capability):
|
def _checkCapability(self, capability, ignoreOwner=False):
|
||||||
"""Checks whether a certain capability is allowed by the channel."""
|
"""Checks whether a certain capability is allowed by the channel."""
|
||||||
assert isCapability(capability), 'got %s' % capability
|
assert isCapability(capability), 'got %s' % capability
|
||||||
if capability in self.capabilities:
|
if capability in self.capabilities:
|
||||||
return self.capabilities.check(capability)
|
return self.capabilities.check(capability, ignoreOwner=ignoreOwner)
|
||||||
else:
|
else:
|
||||||
if isAntiCapability(capability):
|
if isAntiCapability(capability):
|
||||||
return not self.defaultAllow
|
return not self.defaultAllow
|
||||||
@ -1054,7 +1054,8 @@ def _checkCapabilityForUnknownUser(capability, users=users, channels=channels):
|
|||||||
return _x(capability, conf.supybot.capabilities.default())
|
return _x(capability, conf.supybot.capabilities.default())
|
||||||
|
|
||||||
def checkCapability(hostmask, capability, users=users, channels=channels,
|
def checkCapability(hostmask, capability, users=users, channels=channels,
|
||||||
ignoreOwner=False):
|
ignoreOwner=False, ignoreChannelOp=False,
|
||||||
|
ignoreDefaultAllow=False):
|
||||||
"""Checks that the user specified by name/hostmask has the capability given.
|
"""Checks that the user specified by name/hostmask has the capability given.
|
||||||
"""
|
"""
|
||||||
if world.testing and (not isinstance(hostmask, str) or
|
if world.testing and (not isinstance(hostmask, str) or
|
||||||
@ -1075,10 +1076,13 @@ def checkCapability(hostmask, capability, users=users, channels=channels,
|
|||||||
return _checkCapabilityForUnknownUser(capability, users=users,
|
return _checkCapabilityForUnknownUser(capability, users=users,
|
||||||
channels=channels)
|
channels=channels)
|
||||||
if capability in u.capabilities:
|
if capability in u.capabilities:
|
||||||
|
try:
|
||||||
return u._checkCapability(capability, ignoreOwner)
|
return u._checkCapability(capability, ignoreOwner)
|
||||||
else:
|
except KeyError:
|
||||||
|
pass
|
||||||
if isChannelCapability(capability):
|
if isChannelCapability(capability):
|
||||||
(channel, capability) = fromChannelCapability(capability)
|
(channel, capability) = fromChannelCapability(capability)
|
||||||
|
if not ignoreChannelOp:
|
||||||
try:
|
try:
|
||||||
chanop = makeChannelCapability(channel, 'op')
|
chanop = makeChannelCapability(channel, 'op')
|
||||||
if u._checkCapability(chanop):
|
if u._checkCapability(chanop):
|
||||||
@ -1088,8 +1092,10 @@ def checkCapability(hostmask, capability, users=users, channels=channels,
|
|||||||
c = channels.getChannel(channel)
|
c = channels.getChannel(channel)
|
||||||
if capability in c.capabilities:
|
if capability in c.capabilities:
|
||||||
return c._checkCapability(capability)
|
return c._checkCapability(capability)
|
||||||
else:
|
elif not ignoreDefaultAllow:
|
||||||
return _x(capability, c.defaultAllow)
|
return _x(capability, c.defaultAllow)
|
||||||
|
else:
|
||||||
|
return False
|
||||||
defaultCapabilities = conf.supybot.capabilities()
|
defaultCapabilities = conf.supybot.capabilities()
|
||||||
if capability in defaultCapabilities:
|
if capability in defaultCapabilities:
|
||||||
return defaultCapabilities.check(capability)
|
return defaultCapabilities.check(capability)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user