From 2ebb30d2d78928637d4e45d66142998d78ebc5e2 Mon Sep 17 00:00:00 2001 From: Luke Rogers Date: Sat, 15 Feb 2014 18:50:22 +1300 Subject: [PATCH] fixed singlethread reloading, and functional database system (still no ORM usage) --- core/loader.py | 2 +- core/main.py | 6 +++++- plugins/horoscope.py | 8 ++++---- plugins/seen.py | 9 ++++++--- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/core/loader.py b/core/loader.py index 4cc7e25..c7be645 100644 --- a/core/loader.py +++ b/core/loader.py @@ -110,7 +110,7 @@ class PluginLoader(object): # stop all currently running instances of the plugins from this file for func, handler in list(self.bot.threads.iteritems()): if func._filename == filename: - main.handler.stop() + handler.stop() del self.bot.threads[func] self.rebuild() diff --git a/core/main.py b/core/main.py index 955418f..69d44e7 100644 --- a/core/main.py +++ b/core/main.py @@ -124,12 +124,16 @@ class Handler(object): break if uses_db: - input.db = None + input.db = input.bot.db_session() try: run(self.bot, self.func, input) except: self.bot.logger.exception("Error in plugin {}:".format(self.func._filename)) + finally: + if uses_db: + print "Closett" + input.db.close() def stop(self): self.input_queue.put(StopIteration) diff --git a/plugins/horoscope.py b/plugins/horoscope.py index e4404cf..57f733b 100644 --- a/plugins/horoscope.py +++ b/plugins/horoscope.py @@ -29,8 +29,8 @@ def horoscope(inp, db=None, notice=None, nick=None): db.execute("create table if not exists horoscope(nick primary key, sign)") if not sign: - sign = db.execute("select sign from horoscope where nick=lower(?)", - (nick,)).fetchone() + sign = db.execute("select sign from horoscope where nick=lower(:nick)", + {'nick':nick}).fetchone() if not sign: notice("horoscope -- Get your horoscope") return @@ -49,8 +49,8 @@ def horoscope(inp, db=None, notice=None, nick=None): return "Could not get the horoscope for {}.".format(inp) if inp and not dontsave: - db.execute("insert or replace into horoscope(nick, sign) values (?,?)", - (nick.lower(), sign)) + db.execute("insert or replace into horoscope(nick, sign) values (:nick,:sign)", + {'nick':nick.lower(), 'sign': sign}) db.commit() return result diff --git a/plugins/seen.py b/plugins/seen.py index 65bfecb..d8004f4 100644 --- a/plugins/seen.py +++ b/plugins/seen.py @@ -27,8 +27,11 @@ def seen_sieve(paraml, input=None, db=None): # keep private messages private if input.chan[:1] == "#" and not re.findall('^s/.*/.*/$', input.msg.lower()): db.execute("insert or replace into seen_user(name, time, quote, chan, host)" - "values(?,?,?,?,?)", (input.nick.lower(), time.time(), input.msg, - input.chan, input.mask)) + "values(:name,:time,:quote,:chan,:host)", {'name': input.nick.lower(), + 'time': time.time(), + 'quote': input.msg, + 'chan': input.chan, + 'host': input.mask}) db.commit() @@ -49,7 +52,7 @@ def seen(inp, nick='', chan='', db=None, input=None): db_init(db) last_seen = db.execute("select name, time, quote from seen_user where name" - " like ? and chan = ?", (inp, chan)).fetchone() + " like :name and chan = :chan", {'name': inp, 'chan': chan}).fetchone() if last_seen: reltime = timesince.timesince(last_seen[1])