mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-02-17 06:00:42 +01:00
Fixed TODO #1047283.
This commit is contained in:
parent
098fbbfeae
commit
a238ed6298
@ -303,7 +303,7 @@ class Admin(privmsgs.CapabilityCheckingPrivmsg):
|
||||
if ircdb.isAntiCapability(capability) or \
|
||||
ircdb.checkCapability(msg.prefix, capability):
|
||||
user.addCapability(capability)
|
||||
ircdb.users.setUser(user.id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess()
|
||||
else:
|
||||
irc.error('You can\'t add capabilities you don\'t have.')
|
||||
@ -319,7 +319,7 @@ class Admin(privmsgs.CapabilityCheckingPrivmsg):
|
||||
ircdb.isAntiCapability(capability):
|
||||
try:
|
||||
user.removeCapability(capability)
|
||||
ircdb.users.setUser(user.id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess()
|
||||
except KeyError:
|
||||
irc.error('That user doesn\'t have that capability.')
|
||||
|
@ -542,7 +542,7 @@ class Channel(callbacks.Privmsg):
|
||||
for c in capabilities.split():
|
||||
c = ircdb.makeChannelCapability(channel, c)
|
||||
user.addCapability(c)
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess()
|
||||
addcapability = wrap(addcapability, [('checkChannelCapability', 'op'),
|
||||
'hostmask', 'capability'])
|
||||
@ -567,7 +567,7 @@ class Channel(callbacks.Privmsg):
|
||||
user.removeCapability(cap)
|
||||
except KeyError:
|
||||
fail.append(c)
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
if fail:
|
||||
irc.error('That user didn\'t have the %s %s.' %
|
||||
(utils.commaAndify(fail),
|
||||
|
18
src/User.py
18
src/User.py
@ -129,12 +129,12 @@ class User(callbacks.Privmsg):
|
||||
return
|
||||
except KeyError:
|
||||
pass
|
||||
(id, user) = ircdb.users.newUser()
|
||||
user = ircdb.users.newUser()
|
||||
user.name = name
|
||||
user.setPassword(password, hashed=hashed)
|
||||
if addHostmask:
|
||||
user.addHostmask(msg.prefix)
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess()
|
||||
|
||||
def unregister(self, irc, msg, args):
|
||||
@ -183,7 +183,7 @@ class User(callbacks.Privmsg):
|
||||
pass
|
||||
if user.checkHostmask(msg.prefix) or user.checkPassword(password):
|
||||
user.name = newname
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess()
|
||||
|
||||
def addhostmask(self, irc, msg, args):
|
||||
@ -237,7 +237,7 @@ class User(callbacks.Privmsg):
|
||||
except ValueError, e:
|
||||
irc.error(str(e), Raise=True)
|
||||
try:
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
except ValueError, e:
|
||||
irc.error(str(e), Raise=True)
|
||||
irc.replySuccess()
|
||||
@ -275,7 +275,7 @@ class User(callbacks.Privmsg):
|
||||
except ValueError:
|
||||
irc.error('There was no such hostmask.')
|
||||
return
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess(s)
|
||||
|
||||
def setpassword(self, irc, msg, args):
|
||||
@ -306,7 +306,7 @@ class User(callbacks.Privmsg):
|
||||
if user.checkPassword(oldpassword) or \
|
||||
(u.checkCapability('owner') and not u == user):
|
||||
user.setPassword(newpassword, hashed=hashed)
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess()
|
||||
else:
|
||||
irc.error(conf.supybot.replies.incorrectAuthentication())
|
||||
@ -390,7 +390,7 @@ class User(callbacks.Privmsg):
|
||||
if user.checkPassword(password):
|
||||
try:
|
||||
user.addAuth(msg.prefix)
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess()
|
||||
except ValueError:
|
||||
irc.error('Your secure flag is true and your hostmask '
|
||||
@ -413,7 +413,7 @@ class User(callbacks.Privmsg):
|
||||
irc.errorNoUser()
|
||||
return
|
||||
user.clearAuth()
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.replySuccess('If you remain recognized after giving this command, '
|
||||
'you\'re being recognized by hostmask, rather than '
|
||||
'by password. You must remove whatever hostmask is '
|
||||
@ -459,7 +459,7 @@ class User(callbacks.Privmsg):
|
||||
if user.checkPassword(password) and \
|
||||
user.checkHostmask(msg.prefix, useAuth=False):
|
||||
user.secure = value
|
||||
ircdb.users.setUser(id, user)
|
||||
ircdb.users.setUser(user)
|
||||
irc.reply('Secure flag set to %s' % value)
|
||||
else:
|
||||
irc.error(conf.supybot.replies.incorrectAuthentication())
|
||||
|
29
src/ircdb.py
29
src/ircdb.py
@ -458,18 +458,17 @@ class Creator(object):
|
||||
raise ValueError, 'Invalid command on line %s: %s' % (lineno, command)
|
||||
|
||||
class IrcUserCreator(Creator):
|
||||
id = None
|
||||
def __init__(self, users):
|
||||
self.u = IrcUser()
|
||||
self.users = users
|
||||
|
||||
def user(self, rest, lineno):
|
||||
if self.id is not None:
|
||||
if self.u.id is not None:
|
||||
raise ValueError, 'Unexpected user command on line %s.' % lineno
|
||||
IrcUserCreator.id = int(rest)
|
||||
self.u.id = int(rest)
|
||||
|
||||
def _checkId(self):
|
||||
if self.id is None:
|
||||
if self.u.id is None:
|
||||
raise ValueError, 'Unexpected user description without user.'
|
||||
|
||||
def name(self, rest, lineno):
|
||||
@ -503,7 +502,7 @@ class IrcUserCreator(Creator):
|
||||
def finish(self):
|
||||
if self.u.name:
|
||||
try:
|
||||
self.users.setUser(self.id, self.u)
|
||||
self.users.setUser(self.u)
|
||||
except DuplicateHostmask:
|
||||
log.error('Hostmasks for %s collided with another user\'s. '
|
||||
'Resetting hostmasks for %s.', self.u.name)
|
||||
@ -511,7 +510,7 @@ class IrcUserCreator(Creator):
|
||||
# But we've got to do *something*, so we'll show some deference
|
||||
# to our lower-numbered users.
|
||||
self.u.hostmasks[:] = []
|
||||
self.users.setUser(self.id, self.u)
|
||||
self.users.setUser(self.u)
|
||||
IrcUserCreator.id = None
|
||||
|
||||
class IrcChannelCreator(Creator):
|
||||
@ -712,19 +711,17 @@ class UsersDictionary(utils.IterableMap):
|
||||
del self._hostmaskCache[hostmask]
|
||||
del self._hostmaskCache[id]
|
||||
|
||||
# XXX This shouldn't require an id, since user has an id attribute.
|
||||
def setUser(self, id, user):
|
||||
def setUser(self, user):
|
||||
"""Sets a user (given its id) to the IrcUser given it."""
|
||||
assert isinstance(id, int), 'setUser takes an integer userId.'
|
||||
self.nextId = max(self.nextId, id)
|
||||
self.nextId = max(self.nextId, user.id)
|
||||
try:
|
||||
if self.getUserId(user.name) != id:
|
||||
if self.getUserId(user.name) != user.id:
|
||||
raise DuplicateHostmask, hostmask
|
||||
except KeyError:
|
||||
pass
|
||||
for hostmask in user.hostmasks:
|
||||
for (i, u) in self.iteritems():
|
||||
if i == id:
|
||||
if i == user.id:
|
||||
continue
|
||||
elif u.checkHostmask(hostmask):
|
||||
# We used to remove the hostmask here, but it's not
|
||||
@ -736,8 +733,8 @@ class UsersDictionary(utils.IterableMap):
|
||||
for otherHostmask in u.hostmasks:
|
||||
if ircutils.hostmaskPatternEqual(hostmask, otherHostmask):
|
||||
raise DuplicateHostmask, hostmask
|
||||
self.invalidateCache(id)
|
||||
self.users[id] = user
|
||||
self.invalidateCache(user.id)
|
||||
self.users[user.id] = user
|
||||
self.flush()
|
||||
|
||||
def delUser(self, id):
|
||||
@ -752,8 +749,6 @@ class UsersDictionary(utils.IterableMap):
|
||||
del self._hostmaskCache[id]
|
||||
self.flush()
|
||||
|
||||
# XXX This shouldn't return a tuple, just the user, since user has an
|
||||
# id attribute now.
|
||||
def newUser(self):
|
||||
"""Allocates a new user in the database and returns it and its id."""
|
||||
hashed = conf.supybot.databases.users.hash()
|
||||
@ -763,7 +758,7 @@ class UsersDictionary(utils.IterableMap):
|
||||
self.users[id] = user
|
||||
self.flush()
|
||||
user.id = id
|
||||
return (id, user)
|
||||
return user
|
||||
|
||||
|
||||
class ChannelsDictionary(utils.IterableMap):
|
||||
|
@ -917,7 +917,7 @@ class Irc(IrcCommandDispatcher):
|
||||
log.info('Following identification for %s: %s -> %s',
|
||||
u.name, authmask, newhostmask)
|
||||
u.auth[i] = (u.auth[i][0], newhostmask)
|
||||
ircdb.users.setUser(id, u)
|
||||
ircdb.users.setUser(u)
|
||||
|
||||
def _reallyDie(self):
|
||||
"""Makes the Irc object die. Dead."""
|
||||
|
@ -63,9 +63,9 @@ class AdminTestCase(PluginTestCase):
|
||||
|
||||
def testAddcapability(self):
|
||||
self.assertError('addcapability sdlkfj foo')
|
||||
(id, u) = ircdb.users.newUser()
|
||||
u = ircdb.users.newUser()
|
||||
u.name = 'foo'
|
||||
ircdb.users.setUser(id, u)
|
||||
ircdb.users.setUser(u)
|
||||
self.assertError('removecapability foo bar')
|
||||
self.assertNotRegexp('removecapability foo bar', 'find')
|
||||
|
||||
|
@ -44,7 +44,7 @@ class ChannelTestCase(ChannelPluginTestCase, PluginDocumentation):
|
||||
## prefix=self.prefix))
|
||||
## u = ircdb.users.getUser(0)
|
||||
## u.addCapability('%s.op' % self.channel)
|
||||
## ircdb.users.setUser(0, u)
|
||||
## ircdb.users.setUser(u)
|
||||
## self.assertNotError(' ')
|
||||
## self.assertResponse('user capabilities foo', '[]')
|
||||
## self.assertNotError('channel addcapability foo op')
|
||||
|
@ -61,10 +61,9 @@ class ChannelStatsTestCase(ChannelPluginTestCase):
|
||||
self.assertNotError('channelstats stats %s' % self.irc.nick)
|
||||
self.assertNotError('channelstats stats %s' % self.irc.nick)
|
||||
self.assertNotError('channelstats stats %s' % self.irc.nick.upper())
|
||||
id = ircdb.users.getUserId(self.prefix)
|
||||
u = ircdb.users.getUser(id)
|
||||
u = ircdb.users.getUser(self.prefix)
|
||||
u.addCapability(ircdb.makeChannelCapability(self.channel, 'op'))
|
||||
ircdb.users.setUser(id, u)
|
||||
ircdb.users.setUser(u)
|
||||
try:
|
||||
conf.supybot.plugins.ChannelStats.selfStats.setValue(False)
|
||||
m1 = self.getMsg('channelstats stats %s' % self.irc.nick)
|
||||
|
@ -357,19 +357,19 @@ class UsersDictionaryTestCase(IrcdbTestCase):
|
||||
|
||||
def testIterAndNumUsers(self):
|
||||
self.assertEqual(self.users.numUsers(), 0)
|
||||
(id, u) = self.users.newUser()
|
||||
u = self.users.newUser()
|
||||
hostmask = 'foo!xyzzy@baz.domain.com'
|
||||
banmask = ircutils.banmask(hostmask)
|
||||
u.addHostmask(banmask)
|
||||
u.name = 'foo'
|
||||
self.users.setUser(id, u)
|
||||
self.users.setUser(u)
|
||||
self.assertEqual(self.users.numUsers(), 1)
|
||||
(id, u) = self.users.newUser()
|
||||
u = self.users.newUser()
|
||||
hostmask = 'biff!fladksfj@blakjdsf'
|
||||
banmask = ircutils.banmask(hostmask)
|
||||
u.addHostmask(banmask)
|
||||
u.name = 'biff'
|
||||
self.users.setUser(id, u)
|
||||
self.users.setUser(u)
|
||||
self.assertEqual(self.users.numUsers(), 2)
|
||||
self.users.delUser(2)
|
||||
self.assertEqual(self.users.numUsers(), 1)
|
||||
@ -380,22 +380,22 @@ class UsersDictionaryTestCase(IrcdbTestCase):
|
||||
self.assertRaises(KeyError, self.users.getUser, 'foo')
|
||||
self.assertRaises(KeyError,
|
||||
self.users.getUser, 'foo!xyzzy@baz.domain.com')
|
||||
(id, u) = self.users.newUser()
|
||||
u = self.users.newUser()
|
||||
hostmask = 'foo!xyzzy@baz.domain.com'
|
||||
banmask = ircutils.banmask(hostmask)
|
||||
u.addHostmask(banmask)
|
||||
u.addHostmask(hostmask)
|
||||
u.name = 'foo'
|
||||
self.users.setUser(id, u)
|
||||
self.users.setUser(u)
|
||||
self.assertEqual(self.users.getUser('foo'), u)
|
||||
self.assertEqual(self.users.getUser('FOO'), u)
|
||||
self.assertEqual(self.users.getUser(hostmask), u)
|
||||
self.assertEqual(self.users.getUser(banmask), u)
|
||||
# The UsersDictionary shouldn't allow users to be added whose hostmasks
|
||||
# match another user's already in the database.
|
||||
(id, u2) = self.users.newUser()
|
||||
u2 = self.users.newUser()
|
||||
u2.addHostmask('*!xyzzy@baz.domain.c?m')
|
||||
self.assertRaises(ValueError, self.users.setUser, id, u2)
|
||||
self.assertRaises(ValueError, self.users.setUser, u2)
|
||||
|
||||
|
||||
class CheckCapabilityTestCase(IrcdbTestCase):
|
||||
@ -430,47 +430,47 @@ class CheckCapabilityTestCase(IrcdbTestCase):
|
||||
self.channels = ircdb.ChannelsDictionary()
|
||||
#self.channels.open(self.filename)
|
||||
|
||||
(id, owner) = self.users.newUser()
|
||||
owner = self.users.newUser()
|
||||
owner.name = 'owner'
|
||||
owner.addCapability('owner')
|
||||
owner.addHostmask(self.owner)
|
||||
self.users.setUser(id, owner)
|
||||
self.users.setUser(owner)
|
||||
|
||||
(id, nothing) = self.users.newUser()
|
||||
nothing = self.users.newUser()
|
||||
nothing.name = 'nothing'
|
||||
nothing.addHostmask(self.nothing)
|
||||
self.users.setUser(id, nothing)
|
||||
self.users.setUser(nothing)
|
||||
|
||||
(id, justfoo) = self.users.newUser()
|
||||
justfoo = self.users.newUser()
|
||||
justfoo.name = 'justfoo'
|
||||
justfoo.addCapability(self.cap)
|
||||
justfoo.addHostmask(self.justfoo)
|
||||
self.users.setUser(id, justfoo)
|
||||
self.users.setUser(justfoo)
|
||||
|
||||
(id, antifoo) = self.users.newUser()
|
||||
antifoo = self.users.newUser()
|
||||
antifoo.name = 'antifoo'
|
||||
antifoo.addCapability(self.anticap)
|
||||
antifoo.addHostmask(self.antifoo)
|
||||
self.users.setUser(id, antifoo)
|
||||
self.users.setUser(antifoo)
|
||||
|
||||
(id, justchanfoo) = self.users.newUser()
|
||||
justchanfoo = self.users.newUser()
|
||||
justchanfoo.name = 'justchanfoo'
|
||||
justchanfoo.addCapability(self.chancap)
|
||||
justchanfoo.addHostmask(self.justchanfoo)
|
||||
self.users.setUser(id, justchanfoo)
|
||||
self.users.setUser(justchanfoo)
|
||||
|
||||
(id, antichanfoo) = self.users.newUser()
|
||||
antichanfoo = self.users.newUser()
|
||||
antichanfoo.name = 'antichanfoo'
|
||||
antichanfoo.addCapability(self.antichancap)
|
||||
antichanfoo.addHostmask(self.antichanfoo)
|
||||
self.users.setUser(id, antichanfoo)
|
||||
self.users.setUser(antichanfoo)
|
||||
|
||||
(id, securefoo) = self.users.newUser()
|
||||
securefoo = self.users.newUser()
|
||||
securefoo.name = 'securefoo'
|
||||
securefoo.addCapability(self.cap)
|
||||
securefoo.secure = True
|
||||
securefoo.addHostmask(self.securefoo)
|
||||
self.users.setUser(id, securefoo)
|
||||
self.users.setUser(securefoo)
|
||||
|
||||
channel = ircdb.IrcChannel()
|
||||
self.channels.setChannel(self.channel, channel)
|
||||
@ -533,7 +533,7 @@ class CheckCapabilityTestCase(IrcdbTestCase):
|
||||
id = self.users.getUserId('nothing')
|
||||
u = self.users.getUser(id)
|
||||
u.addCapability(self.chanop)
|
||||
self.users.setUser(id, u)
|
||||
self.users.setUser(u)
|
||||
self.failUnless(self.checkCapability(self.nothing, self.chancap))
|
||||
self.channels.setChannel(self.channel, self.channelnothing)
|
||||
self.failUnless(self.checkCapability(self.nothing, self.chancap))
|
||||
@ -551,7 +551,7 @@ class CheckCapabilityTestCase(IrcdbTestCase):
|
||||
id = self.users.getUserId(self.securefoo)
|
||||
u = self.users.getUser(id)
|
||||
u.addAuth(self.securefoo)
|
||||
self.users.setUser(id, u)
|
||||
self.users.setUser(u)
|
||||
try:
|
||||
originalConfDefaultAllow = conf.supybot.capabilities.default()
|
||||
conf.supybot.capabilities.default.set('False')
|
||||
|
Loading…
x
Reference in New Issue
Block a user