fixed singlethread reloading, and functional database system (still no ORM usage)

This commit is contained in:
Luke Rogers 2014-02-15 18:50:22 +13:00
parent cdc9102694
commit 2ebb30d2d7
4 changed files with 16 additions and 9 deletions

View file

@ -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()

View file

@ -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)

View file

@ -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 <sign> -- 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

View file

@ -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])