Dispatch: better (aka correct) db_init section

This commit is contained in:
Brian S. Stephan 2013-05-03 15:59:49 -05:00
parent b375a5a049
commit f09a41bce0
1 changed files with 19 additions and 9 deletions

View File

@ -31,10 +31,10 @@ class Dispatch(Module):
def db_init(self):
"""Set up the database tables, if they don't exist."""
version = self.db_module_registered(self.__class__.__name__)
if (version == None):
try:
db = self.get_db()
try:
version = self.db_module_registered(self.__class__.__name__)
if version is None:
version = 1
cur = db.cursor(mdb.cursors.DictCursor)
cur.execute('''
@ -48,12 +48,22 @@ class Dispatch(Module):
db.commit()
self.db_register_module_version(self.__class__.__name__,
version)
except mdb.Error as e:
db.rollback()
self.log.error("database error trying to create tables")
self.log.exception(e)
raise
finally: cur.close()
if version == 1:
version = 2
cur = db.cursor(mdb.cursors.DictCursor)
cur.execute('''
ALTER TABLE dispatch_item DROP PRIMARY KEY, ADD PRIMARY KEY (key_, dest)
''')
db.commit()
self.db_register_module_version(self.__class__.__name__,
version)
except mdb.Error as e:
db.rollback()
self.log.error("database error trying to create tables")
self.log.exception(e)
raise
finally: cur.close()
def xmlrpc_init(self):
"""Expose dispatching interface."""