Fix DB windows when prevent_dblist is set

issue3280
review1181002
This commit is contained in:
Cédric Krier committed 2013-10-20 16:21:38 +02:00
1 parent 9e95d01716
commit 38bd72cec7
4 files changed
+55 -63

No files matched your search

+6 -12
View File
@@ -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
+42 -42
View File
@@ -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()
+5 -8
View File
@@ -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
View File
@@ -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