Fix DB windows when prevent_dblist is set
issue3280 review1181002
This commit is contained in:
1 parent
9e95d01716
commit
38bd72cec7
4 files changed
+55
-63
No files matched your search
+6
-12
@@ -1193,20 +1193,18 @@ def generateColorscheme(masterColor, keys, light=0.06):
|
||||
class DBProgress(object):
|
||||
|
||||
def __init__(self, host, port):
|
||||
self.dbs, self.createdb = None, None
|
||||
self.dbs = None, None
|
||||
self.host, self.port = host, port
|
||||
self.updated = threading.Event()
|
||||
self.db_info = None
|
||||
|
||||
def start(self):
|
||||
dbs, createdb = None, False
|
||||
dbs = None
|
||||
try:
|
||||
dbs = refresh_dblist(self.host, self.port)
|
||||
createdb = True
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
self.db_info = (dbs, createdb)
|
||||
self.dbs = dbs
|
||||
self.updated.set()
|
||||
|
||||
def update(self, combo, progressbar, callback, dbname=''):
|
||||
@@ -1221,13 +1219,9 @@ class DBProgress(object):
|
||||
progressbar.pulse()
|
||||
return True
|
||||
progressbar.hide()
|
||||
dbs, createdb = self.db_info
|
||||
dbs = self.dbs
|
||||
|
||||
if dbs is None:
|
||||
dbs, createdb = None, False
|
||||
elif dbs == -1:
|
||||
dbs, createdb = -1, False
|
||||
else:
|
||||
if dbs is not None and dbs not in (-1, -2):
|
||||
liststore = combo.get_model()
|
||||
liststore.clear()
|
||||
index = -1
|
||||
@@ -1240,7 +1234,7 @@ class DBProgress(object):
|
||||
combo.set_active(index)
|
||||
dbs = len(dbs)
|
||||
|
||||
callback(dbs, createdb)
|
||||
callback(dbs)
|
||||
return False
|
||||
|
||||
|
||||
|
||||
@@ -14,42 +14,40 @@ class DBBackupDrop(object):
|
||||
"""
|
||||
Widget for database backup and drop.
|
||||
"""
|
||||
@staticmethod
|
||||
def refreshlist(widget, db_widget, label, db_progress, host, port):
|
||||
db_widget.hide()
|
||||
label.hide()
|
||||
def refreshlist(self, host, port):
|
||||
self.combo_database.hide()
|
||||
self.combo_database_label.hide()
|
||||
self.combo_database_entry.hide()
|
||||
dbprogress = common.DBProgress(host, port)
|
||||
|
||||
def callback(dbs, createdb):
|
||||
if dbs is None or dbs == -1:
|
||||
if dbs is None:
|
||||
label.set_label('<b>' +
|
||||
_('Could not connect to server!') + '</b>')
|
||||
else:
|
||||
label.set_label('<b>' +
|
||||
_('This client version is not compatible '
|
||||
'with the server!')
|
||||
+ '</b>')
|
||||
db_widget.hide()
|
||||
label.show()
|
||||
def callback(dbs):
|
||||
if dbs is None:
|
||||
self.combo_database_label.set_label('<b>' +
|
||||
_('Could not connect to server!') + '</b>')
|
||||
self.combo_database_label.show()
|
||||
elif dbs == -1:
|
||||
self.combo_database_label.set_label('<b>' +
|
||||
_('This client version is not compatible '
|
||||
'with the server!')
|
||||
+ '</b>')
|
||||
self.combo_database_label.show()
|
||||
elif dbs == -2:
|
||||
self.combo_database_entry.show()
|
||||
self.combo_database_entry.grab_focus()
|
||||
elif dbs == 0:
|
||||
label.set_label('<b>'
|
||||
self.combo_database_label.set_label('<b>'
|
||||
+ _('No database found, you must create one!') + '</b>')
|
||||
db_widget.hide()
|
||||
label.show()
|
||||
self.combo_database_label.show()
|
||||
else:
|
||||
label.hide()
|
||||
db_widget.show()
|
||||
dbprogress.update(db_widget, db_progress, callback)
|
||||
self.combo_database.show()
|
||||
dbprogress.update(self.combo_database, self.db_progressbar, callback)
|
||||
|
||||
@staticmethod
|
||||
def refreshlist_ask(widget, server_widget, db_widget, label, db_progress):
|
||||
res = common.request_server(server_widget)
|
||||
def refreshlist_ask(self, widget=None):
|
||||
res = common.request_server(self.entry_server_connection)
|
||||
if not res:
|
||||
return None
|
||||
host, port = res
|
||||
DBBackupDrop.refreshlist(widget, db_widget, label, db_progress, host,
|
||||
port)
|
||||
self.refreshlist(host, port)
|
||||
return (host, port)
|
||||
|
||||
def event_show_button_ok(self, widget, event, data=None):
|
||||
@@ -60,7 +58,8 @@ class DBBackupDrop(object):
|
||||
event method doesn't check the valid of single entrys.
|
||||
"""
|
||||
if (self.entry_server_connection.get_text() != ""
|
||||
and self.combo_database.get_active_text() != ""
|
||||
and (self.combo_database.get_active_text() != ""
|
||||
or self.combo_database_entry.get_text() != "")
|
||||
and self.entry_serverpasswd.get_text() != ""):
|
||||
widget.unset_flags(gtk.HAS_DEFAULT)
|
||||
self.button_ok.set_sensitive(True)
|
||||
@@ -171,9 +170,11 @@ class DBBackupDrop(object):
|
||||
self.combo_database_label = gtk.Label()
|
||||
self.combo_database_label.set_use_markup(True)
|
||||
self.combo_database_label.set_alignment(0, 1)
|
||||
self.combo_database_entry = gtk.Entry()
|
||||
vbox_combo.pack_start(self.combo_database)
|
||||
vbox_combo.pack_start(self.combo_database_label)
|
||||
vbox_combo.pack_start(self.db_progressbar)
|
||||
vbox_combo.pack_start(self.combo_database_entry)
|
||||
width, height = 0, 0
|
||||
# Compute size_request of box in order to prevent "form jumping"
|
||||
for child in vbox_combo.get_children():
|
||||
@@ -205,18 +206,12 @@ class DBBackupDrop(object):
|
||||
self.dialog.set_default_response(gtk.RESPONSE_OK)
|
||||
self.dialog.show_all()
|
||||
|
||||
pass_widget = self.entry_serverpasswd
|
||||
server_widget = self.entry_server_connection
|
||||
server_widget.set_text('%(login.server)s:%(login.port)s' % CONFIG)
|
||||
db_widget = self.combo_database
|
||||
db_progress = self.db_progressbar
|
||||
label = self.combo_database_label
|
||||
self.refreshlist(None, db_widget, label, db_progress,
|
||||
CONFIG['login.server'], CONFIG['login.port'])
|
||||
self.entry_server_connection.set_text(
|
||||
'%(login.server)s:%(login.port)s' % CONFIG)
|
||||
self.refreshlist(CONFIG['login.server'], CONFIG['login.port'])
|
||||
|
||||
change_button = self.button_server_change
|
||||
change_button.connect_after('clicked', DBBackupDrop.refreshlist_ask,
|
||||
server_widget, db_widget, label, db_progress)
|
||||
self.button_server_change.connect_after('clicked',
|
||||
self.refreshlist_ask)
|
||||
|
||||
while True:
|
||||
database = False
|
||||
@@ -224,9 +219,14 @@ class DBBackupDrop(object):
|
||||
passwd = False
|
||||
res = self.dialog.run()
|
||||
if res == gtk.RESPONSE_OK:
|
||||
database = db_widget.get_active_text()
|
||||
url = server_widget.get_text()
|
||||
passwd = pass_widget.get_text()
|
||||
if self.combo_database.get_visible():
|
||||
database = self.combo_database.get_active_text()
|
||||
elif self.combo_database_entry.get_visible():
|
||||
database = self.combo_database_entry.get_text()
|
||||
else:
|
||||
continue
|
||||
url = self.entry_server_connection.get_text()
|
||||
passwd = self.entry_serverpasswd.get_text()
|
||||
break
|
||||
if res != gtk.RESPONSE_OK:
|
||||
self.dialog.destroy()
|
||||
|
||||
@@ -299,13 +299,11 @@ class DBListEditor(object):
|
||||
self.port_entry.set_sensitive(False)
|
||||
self.updating_db = True
|
||||
|
||||
def callback(dbs, createdb):
|
||||
def callback(dbs):
|
||||
self.updating_db = False
|
||||
self.db_cache = (host, port, self.current_profile['name'])
|
||||
|
||||
if dbs is None and createdb is None:
|
||||
pass
|
||||
elif dbs is None or dbs == -1:
|
||||
if dbs is None or dbs == -1:
|
||||
if dbs is None:
|
||||
label = _(u'Could not connect to the server')
|
||||
else:
|
||||
@@ -313,10 +311,9 @@ class DBListEditor(object):
|
||||
self.database_label.set_label('<b>%s</b>' % label)
|
||||
self.database_label.show()
|
||||
elif dbs == 0:
|
||||
if createdb:
|
||||
self.database_button.show()
|
||||
else:
|
||||
self.database_entry.show()
|
||||
self.database_button.show()
|
||||
elif dbs == -2:
|
||||
self.database_entry.show()
|
||||
else:
|
||||
self.database_entry.set_text(dbname if dbname else '')
|
||||
self.database_combo.show()
|
||||
|
||||
+2
-1
@@ -44,7 +44,8 @@ def db_list(host, port):
|
||||
return result
|
||||
except Fault, exception:
|
||||
if exception.faultCode == 'AccessDenied':
|
||||
raise
|
||||
logging.getLogger(__name__).debug(-2)
|
||||
return -2
|
||||
else:
|
||||
logging.getLogger(__name__).debug(repr(None))
|
||||
return None
|
||||
|
||||
Reference in new issue
Block a user