fix handling of global lock when re-creating tables
This commit is contained in:
parent
5b96769de3
commit
b016c496f2
|
@ -175,35 +175,53 @@ class fpdb:
|
||||||
def dia_load_profile(self, widget, data=None):
|
def dia_load_profile(self, widget, data=None):
|
||||||
"""Dialogue to select a file to load a profile from"""
|
"""Dialogue to select a file to load a profile from"""
|
||||||
if self.obtain_global_lock():
|
if self.obtain_global_lock():
|
||||||
chooser = gtk.FileChooserDialog(title="Please select a profile file to load",
|
try:
|
||||||
action=gtk.FILE_CHOOSER_ACTION_OPEN,
|
chooser = gtk.FileChooserDialog(title="Please select a profile file to load",
|
||||||
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
|
action=gtk.FILE_CHOOSER_ACTION_OPEN,
|
||||||
chooser.set_filename(self.profile)
|
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
|
||||||
|
chooser.set_filename(self.profile)
|
||||||
|
|
||||||
response = chooser.run()
|
response = chooser.run()
|
||||||
chooser.destroy()
|
chooser.destroy()
|
||||||
if response == gtk.RESPONSE_OK:
|
if response == gtk.RESPONSE_OK:
|
||||||
self.load_profile(chooser.get_filename())
|
self.load_profile(chooser.get_filename())
|
||||||
elif response == gtk.RESPONSE_CANCEL:
|
elif response == gtk.RESPONSE_CANCEL:
|
||||||
print 'User cancelled loading profile'
|
print 'User cancelled loading profile'
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
self.release_global_lock()
|
||||||
#end def dia_load_profile
|
#end def dia_load_profile
|
||||||
|
|
||||||
def dia_recreate_tables(self, widget, data=None):
|
def dia_recreate_tables(self, widget, data=None):
|
||||||
"""Dialogue that asks user to confirm that he wants to delete and recreate the tables"""
|
"""Dialogue that asks user to confirm that he wants to delete and recreate the tables"""
|
||||||
if self.obtain_global_lock():
|
if self.obtain_global_lock():
|
||||||
|
|
||||||
dia_confirm = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING,
|
lock_released = False
|
||||||
buttons=(gtk.BUTTONS_YES_NO), message_format="Confirm deleting and recreating tables")
|
try:
|
||||||
diastring = "Please confirm that you want to (re-)create the tables. If there already are tables in the database "+self.db.database+" on "+self.db.host+" they will be deleted."
|
dia_confirm = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING,
|
||||||
dia_confirm.format_secondary_text(diastring)#todo: make above string with bold for db, host and deleted
|
buttons=(gtk.BUTTONS_YES_NO), message_format="Confirm deleting and recreating tables")
|
||||||
|
diastring = "Please confirm that you want to (re-)create the tables. If there already are tables in the database "+self.db.database+" on "+self.db.host+" they will be deleted."
|
||||||
|
dia_confirm.format_secondary_text(diastring)#todo: make above string with bold for db, host and deleted
|
||||||
|
|
||||||
response = dia_confirm.run()
|
response = dia_confirm.run()
|
||||||
dia_confirm.destroy()
|
dia_confirm.destroy()
|
||||||
if response == gtk.RESPONSE_YES:
|
if response == gtk.RESPONSE_YES:
|
||||||
self.db.recreate_tables()
|
if self.db.backend == self.fdb_lock.MYSQL_INNODB:
|
||||||
elif response == gtk.RESPONSE_NO:
|
# mysql requires locks on all tables or none - easier to release this lock
|
||||||
print 'User cancelled recreating tables'
|
# than lock all the other tables
|
||||||
self.release_global_lock()
|
# ToDo: lock all other tables so that lock doesn't have to be released
|
||||||
|
self.release_global_lock()
|
||||||
|
lock_released = True
|
||||||
|
self.db.recreate_tables()
|
||||||
|
else:
|
||||||
|
# for other dbs use same connection as holds global lock
|
||||||
|
self.fdb_lock.recreate_tables()
|
||||||
|
elif response == gtk.RESPONSE_NO:
|
||||||
|
print 'User cancelled recreating tables'
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if not lock_released:
|
||||||
|
self.release_global_lock()
|
||||||
#end def dia_recreate_tables
|
#end def dia_recreate_tables
|
||||||
|
|
||||||
def dia_regression_test(self, widget, data=None):
|
def dia_regression_test(self, widget, data=None):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user