Allow connections to be coloured in the treeview and query tool. Fixes #1383. Fixes #2802

This commit is contained in:
Murtuza Zabuawala
2017-11-21 16:28:01 +00:00
committed by Dave Page
parent 9212699936
commit b284572afe
19 changed files with 365 additions and 30 deletions

View File

@@ -43,7 +43,6 @@ def has_any(data, keys):
return False
def recovery_state(connection, postgres_version):
recovery_check_sql = render_template("connect/sql/#{0}#/check_recovery.sql".format(postgres_version))
@@ -56,6 +55,38 @@ def recovery_state(connection, postgres_version):
wal_paused = None
return in_recovery, wal_paused
def server_icon_and_background(is_connected, manager, server):
"""
Args:
is_connected: Flag to check if server is connected
manager: Connection manager
server: Sever object
Returns:
Server Icon CSS class
"""
server_background_color = ''
if server and server.bgcolor:
server_background_color = ' {0}'.format(
server.bgcolor
)
# If user has set font color also
if server.fgcolor:
server_background_color = '{0} {1}'.format(
server_background_color,
server.fgcolor
)
if is_connected:
return 'icon-{0}{1}'.format(
manager.server_type, server_background_color
)
else:
return 'icon-server-not-connected{0}'.format(
server_background_color
)
class ServerModule(sg.ServerGroupPluginModule):
NODE_TYPE = "server"
@@ -87,14 +118,14 @@ class ServerModule(sg.ServerGroupPluginModule):
connected = conn.connected()
in_recovery = None
wal_paused = None
if connected:
in_recovery, wal_paused = recovery_state(conn, manager.version)
yield self.generate_browser_node(
"%d" % (server.id),
gid,
server.name,
"icon-server-not-connected" if not connected else
"icon-{0}".format(manager.server_type),
server_icon_and_background(connected, manager, server),
True,
self.NODE_TYPE,
connected=connected,
@@ -305,8 +336,7 @@ class ServerNode(PGChildNodeView):
"%d" % (server.id),
gid,
server.name,
"icon-server-not-connected" if not connected else
"icon-{0}".format(manager.server_type),
server_icon_and_background(connected, manager, server),
True,
self.node_type,
connected=connected,
@@ -359,8 +389,7 @@ class ServerNode(PGChildNodeView):
"%d" % (server.id),
gid,
server.name,
"icon-server-not-connected" if not connected else
"icon-{0}".format(manager.server_type),
server_icon_and_background(connected, manager, server),
True,
self.node_type,
connected=connected,
@@ -435,7 +464,9 @@ class ServerNode(PGChildNodeView):
'sslkey': 'sslkey',
'sslrootcert': 'sslrootcert',
'sslcrl': 'sslcrl',
'sslcompression': 'sslcompression'
'sslcompression': 'sslcompression',
'bgcolor': 'bgcolor',
'fgcolor': 'fgcolor'
}
disp_lbl = {
@@ -515,8 +546,7 @@ class ServerNode(PGChildNodeView):
node=self.blueprint.generate_browser_node(
"%d" % (server.id), server.servergroup_id,
server.name,
"icon-server-not-connected" if not connected else
"icon-{0}".format(manager.server_type),
server_icon_and_background(connected, manager, server),
True,
self.node_type,
connected=False,
@@ -610,6 +640,8 @@ class ServerNode(PGChildNodeView):
'version': manager.ver,
'sslmode': server.ssl_mode,
'server_type': manager.server_type if connected else 'pg',
'bgcolor': server.bgcolor,
'fgcolor': server.fgcolor,
'db_res': server.db_res.split(',') if server.db_res else None,
'passfile': server.passfile if server.passfile else None,
'sslcert': server.sslcert if is_ssl else None,
@@ -680,7 +712,12 @@ class ServerNode(PGChildNodeView):
sslkey=data['sslkey'] if is_ssl else None,
sslrootcert=data['sslrootcert'] if is_ssl else None,
sslcrl=data['sslcrl'] if is_ssl else None,
sslcompression=1 if is_ssl and data['sslcompression'] else 0
sslcompression=1 if is_ssl and data['sslcompression'] else 0,
bgcolor=data['bgcolor'] if u'bgcolor' in data
else None,
fgcolor = data['fgcolor'] if u'fgcolor' in data
else None
)
db.session.add(server)
db.session.commit()
@@ -735,7 +772,7 @@ class ServerNode(PGChildNodeView):
node=self.blueprint.generate_browser_node(
"%d" % server.id, server.servergroup_id,
server.name,
'icon-{0}'.format(manager.server_type) if manager and manager.server_type else "icon-pg",
server_icon_and_background(connected, manager, server),
True,
self.node_type,
user=user,
@@ -968,9 +1005,7 @@ class ServerNode(PGChildNodeView):
success=1,
info=gettext("Server connected."),
data={
'icon': 'icon-{0}'.format(
manager.server_type
),
'icon': server_icon_and_background(True, manager, server),
'connected': True,
'server_type': manager.server_type,
'type': manager.server_type,
@@ -1001,7 +1036,7 @@ class ServerNode(PGChildNodeView):
success=1,
info=gettext("Server disconnected."),
data={
'icon': 'icon-server-not-connected',
'icon': server_icon_and_background(False, manager, server),
'connected': False
}
)

View File

@@ -651,6 +651,13 @@ define('pgadmin.node.server', [
},{
id: 'version', label: gettext('Version'), type: 'text', group: null,
mode: ['properties'], visible: 'isConnected'
},{
id: 'bgcolor', label: gettext('Background'), type: 'color',
group: null, mode: ['edit', 'create'], disabled: 'isfgColorSet',
deps: ['fgcolor']
},{
id: 'fgcolor', label: gettext('Foreground'), type: 'color',
group: null, mode: ['edit', 'create'], disabled: 'isConnected',
},{
id: 'connect_now', controlLabel: gettext('Connect now?'), type: 'checkbox',
group: null, mode: ['create']
@@ -881,6 +888,23 @@ define('pgadmin.node.server', [
isConnected: function(model) {
return model.get('connected');
},
isfgColorSet: function(model) {
var bgcolor = model.get('bgcolor'),
fgcolor = model.get('fgcolor');
if(model.get('connected')) {
return true;
}
// If fgcolor is set and bgcolor is not set then force bgcolor
// to set as white
if(_.isUndefined(bgcolor) || _.isNull(bgcolor) || !bgcolor) {
if(fgcolor) {
model.set('bgcolor', '#ffffff');
}
}
return false;
},
isSSL: function(model) {
var ssl_mode = model.get('sslmode');
// If server is not connected and have required SSL option