From a238ed629888e494be7ac7ee373ef1529bf79f41 Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Fri, 22 Oct 2004 06:21:34 +0000 Subject: [PATCH] Fixed TODO #1047283. --- src/Admin.py | 4 ++-- src/Channel.py | 4 ++-- src/User.py | 18 +++++++-------- src/ircdb.py | 29 ++++++++++------------- src/irclib.py | 2 +- test/test_Admin.py | 4 ++-- test/test_Channel.py | 2 +- test/test_ChannelStats.py | 5 ++-- test/test_ircdb.py | 48 +++++++++++++++++++-------------------- 9 files changed, 55 insertions(+), 61 deletions(-) diff --git a/src/Admin.py b/src/Admin.py index 16c23ef3d..1f4bb88a1 100755 --- a/src/Admin.py +++ b/src/Admin.py @@ -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.') diff --git a/src/Channel.py b/src/Channel.py index 1a356dcdf..4442bc970 100755 --- a/src/Channel.py +++ b/src/Channel.py @@ -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), diff --git a/src/User.py b/src/User.py index 01c40c344..7aee66aab 100755 --- a/src/User.py +++ b/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()) diff --git a/src/ircdb.py b/src/ircdb.py index 50face433..4141e5c3c 100644 --- a/src/ircdb.py +++ b/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): diff --git a/src/irclib.py b/src/irclib.py index 74a013a48..f83d4bbca 100644 --- a/src/irclib.py +++ b/src/irclib.py @@ -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.""" diff --git a/test/test_Admin.py b/test/test_Admin.py index bef50359d..dee261a9d 100644 --- a/test/test_Admin.py +++ b/test/test_Admin.py @@ -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') diff --git a/test/test_Channel.py b/test/test_Channel.py index 61a18b525..71a7274d9 100644 --- a/test/test_Channel.py +++ b/test/test_Channel.py @@ -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') diff --git a/test/test_ChannelStats.py b/test/test_ChannelStats.py index 80b07ef22..b19665014 100644 --- a/test/test_ChannelStats.py +++ b/test/test_ChannelStats.py @@ -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) diff --git a/test/test_ircdb.py b/test/test_ircdb.py index a60a42090..326f1d3b0 100644 --- a/test/test_ircdb.py +++ b/test/test_ircdb.py @@ -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')