From fc24f3ded1e5c8b4bbaddded67c824fcf144f19c Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Thu, 9 Oct 2003 06:43:58 +0000 Subject: [PATCH] Made seen case-insensitive. --- plugins/ChannelDB.py | 106 +++++++++++++++++++++-------------------- test/test_ChannelDB.py | 5 ++ 2 files changed, 60 insertions(+), 51 deletions(-) diff --git a/plugins/ChannelDB.py b/plugins/ChannelDB.py index 4404f053b..c0ecfaa5c 100644 --- a/plugins/ChannelDB.py +++ b/plugins/ChannelDB.py @@ -84,56 +84,60 @@ class ChannelDB(plugins.ChannelDBHandler, callbacks.PrivmsgCommandAndRegexp): def makeDb(self, filename): if os.path.exists(filename): - return sqlite.connect(filename) - db = sqlite.connect(filename) - cursor = db.cursor() - cursor.execute("""CREATE TABLE user_stats ( - id INTEGER PRIMARY KEY, - name TEXT UNIQUE, - last_seen TIMESTAMP, - last_msg TEXT, - smileys INTEGER, - frowns INTEGER, - chars INTEGER, - words INTEGER, - msgs INTEGER, - actions INTEGER, - joins INTEGER, - parts INTEGER, - kicks INTEGER, - kicked INTEGER, - modes INTEGER, - topics INTEGER - )""") - cursor.execute("""CREATE TABLE channel_stats ( - smileys INTEGER, - frowns INTEGER, - chars INTEGER, - words INTEGER, - msgs INTEGER, - actions INTEGER, - joins INTEGER, - parts INTEGER, - kicks INTEGER, - modes INTEGER, - topics INTEGER - )""") - cursor.execute("""CREATE TABLE nick_seen ( - name TEXT UNIQUE ON CONFLICT REPLACE, - last_seen TIMESTAMP, - last_msg TEXT - )""") - cursor.execute("""INSERT INTO channel_stats - VALUES (0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0)""") + db = sqlite.connect(filename) + else: + db = sqlite.connect(filename) + cursor = db.cursor() + cursor.execute("""CREATE TABLE user_stats ( + id INTEGER PRIMARY KEY, + name TEXT UNIQUE, + last_seen TIMESTAMP, + last_msg TEXT, + smileys INTEGER, + frowns INTEGER, + chars INTEGER, + words INTEGER, + msgs INTEGER, + actions INTEGER, + joins INTEGER, + parts INTEGER, + kicks INTEGER, + kicked INTEGER, + modes INTEGER, + topics INTEGER + )""") + cursor.execute("""CREATE TABLE channel_stats ( + smileys INTEGER, + frowns INTEGER, + chars INTEGER, + words INTEGER, + msgs INTEGER, + actions INTEGER, + joins INTEGER, + parts INTEGER, + kicks INTEGER, + modes INTEGER, + topics INTEGER + )""") + cursor.execute("""CREATE TABLE nick_seen ( + name TEXT UNIQUE ON CONFLICT REPLACE, + last_seen TIMESTAMP, + last_msg TEXT + )""") + cursor.execute("""INSERT INTO channel_stats + VALUES (0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0)""") - cursor.execute("""CREATE TABLE karma ( - id INTEGER PRIMARY KEY, - name TEXT UNIQUE ON CONFLICT IGNORE, - added INTEGER, - subtracted INTEGER - )""") - db.commit() + cursor.execute("""CREATE TABLE karma ( + id INTEGER PRIMARY KEY, + name TEXT UNIQUE ON CONFLICT IGNORE, + added INTEGER, + subtracted INTEGER + )""") + db.commit() + def p(s1, s2): + return int(ircutils.nickEqual(s1, s2)) + db.create_function('nickeq', 2, p) return db def doPrivmsg(self, irc, msg): @@ -303,11 +307,11 @@ class ChannelDB(plugins.ChannelDBHandler, callbacks.PrivmsgCommandAndRegexp): return else: table = 'nick_seen' - sql = """SELECT last_seen, last_msg FROM %s WHERE name=%%s""" % table + sql = "SELECT last_seen, last_msg FROM %s WHERE nickeq(name,%%s)"%table #debug.printf(sql) cursor.execute(sql, name) if cursor.rowcount == 0: - irc.reply(msg, 'I have not seen %s.' % name) + irc.error(msg, 'I have not seen %s.' % name) else: (seen, m) = cursor.fetchone() seen = int(seen) diff --git a/test/test_ChannelDB.py b/test/test_ChannelDB.py index 411a1b27a..25a241b2d 100644 --- a/test/test_ChannelDB.py +++ b/test/test_ChannelDB.py @@ -51,6 +51,11 @@ if sqlite is not None: def testNoKeyErrorStats(self): self.assertNotRegexp('stats sweede', 'KeyError') + def testSeen(self): + self.assertNotError('list') + self.assertNotError('seen %s' % self.nick) + self.assertNotError('seen %s' % self.nick.upper()) + def testKarma(self): self.assertRegexp('karma foobar', 'no karma') try: