Handle comments on databases with datallowconn=False correctly. Fixes #2024

pull/3/head
Murtuza Zabuawala 2017-01-16 15:42:25 +00:00 committed by Dave Page
parent 0d4bc0d27d
commit e431eb9d8e
1 changed files with 65 additions and 75 deletions

View File

@ -134,9 +134,17 @@ class DatabaseView(PGChildNodeView):
self.conn = self.manager.connection()
elif 'did' in kwargs:
self.conn = self.manager.connection(did=kwargs['did'])
# If connection to database is not allowed then
# provide generic connection
if kwargs['did'] in self.conn.manager.db_info:
self._db = self.conn.manager.db_info[kwargs['did']]
if self._db['datallowconn'] is False:
self.conn = self.manager.connection()
else:
self.conn = self.manager.connection()
ver = self.manager.version
# we will set template path for sql scripts
if ver >= 90300:
@ -559,8 +567,8 @@ class DatabaseView(PGChildNodeView):
if 'name' not in data:
data['name'] = data['old_name']
status = self.manager.release(did=did)
for action in ["rename_database", "tablespace"]:
status = self.manager.release(did=did)
SQL = self.get_offline_sql(gid, sid, data, did, action)
SQL = SQL.strip('\n').strip(' ')
if SQL and SQL != "":
@ -568,21 +576,6 @@ class DatabaseView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=msg)
if not self.manager.db_info[did]['datallowconn']:
return jsonify(
node=self.blueprint.generate_browser_node(
did,
sid,
data['name'],
"icon-database-not-connected",
connected=False,
allowConn=False
)
)
self.conn = self.manager.connection(database=data['name'], auto_reconnect=True)
status, errmsg = self.conn.connect()
SQL = self.get_online_sql(gid, sid, data, did)
SQL = SQL.strip('\n').strip(' ')
if SQL and SQL != "":
@ -595,7 +588,11 @@ class DatabaseView(PGChildNodeView):
did,
sid,
data['name'],
"pg-icon-{0}".format(self.node_type)
"pg-icon-{0}".format(self.node_type) if
self._db['datallowconn'] else
"icon-database-not-connected",
connected=False,
allowConn=False
)
)
@ -639,7 +636,6 @@ class DatabaseView(PGChildNodeView):
return internal_server_error(errormsg=msg)
return make_json_response(success=1)
@check_precondition(action="msql")
@ -693,7 +689,6 @@ class DatabaseView(PGChildNodeView):
for action in ["rename_database", "tablespace"]:
SQL += self.get_offline_sql(gid, sid, data, did, action)
if rset['rows'][0]['datallowconn']:
SQL += self.get_online_sql(gid, sid, data, did)
else:
SQL += self.get_new_sql(gid, sid, data, did)
@ -715,8 +710,6 @@ class DatabaseView(PGChildNodeView):
acls = []
SQL_acl = ''
if ('datallowconn' in data and data['datallowconn']) or \
'datallowconn' not in data:
try:
acls = render_template(
"/".join([self.template_path, 'allowed_privs.json'])
@ -738,10 +731,9 @@ class DatabaseView(PGChildNodeView):
data=data, conn=self.conn
)
conn = self.manager.connection()
SQL = render_template(
"/".join([self.template_path, 'create.sql']),
data=data, conn=conn
data=data, conn=self.conn
)
SQL += "\n"
SQL += SQL_acl
@ -847,7 +839,6 @@ class DatabaseView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=res)
if res['rows'][0]['datallowconn']:
SQL = render_template(
"/".join([self.template_path, 'acl.sql']),
did=did, conn=self.conn
@ -869,7 +860,6 @@ class DatabaseView(PGChildNodeView):
result = res['rows'][0]
if result['datallowconn']:
SQL = render_template(
"/".join([self.template_path, 'get_variables.sql']),
did=did, conn=self.conn