public inbox for [email protected]
help / color / mirror / Atom feed[pgAdmin4] [PATCH] To fix error in SQL panel
2+ messages / 2 participants
[nested] [flat]
* [pgAdmin4] [PATCH] To fix error in SQL panel
@ 2017-05-25 10:20 Murtuza Zabuawala <[email protected]>
0 siblings, 1 reply; 2+ messages in thread
From: Murtuza Zabuawala @ 2017-05-25 10:20 UTC (permalink / raw)
To: pgadmin-hackers
Hi,
PFA patch to fix the issue which due to python side validations, at many
places it was assumed that we will always get a row from query result.
RM#2427
*Note:* Almost all the database level nodes are affected by this patch.
--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Attachments:
[application/octet-stream] RM_2427.patch (92.6K, 3-RM_2427.patch)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/__init__.py b/web/pgadmin/browser/server_groups/__init__.py
index e337d85..4b09d4d 100644
--- a/web/pgadmin/browser/server_groups/__init__.py
+++ b/web/pgadmin/browser/server_groups/__init__.py
@@ -307,7 +307,9 @@ class ServerGroupView(NodeView):
group = ServerGroup.query.filter_by(user_id=current_user.id,
id=gid).first()
if not group:
- return gone(errormsg="Could not find the server group.")
+ return gone(
+ errormsg=gettext("Could not find the server group.")
+ )
nodes = self.blueprint.generate_browser_node(
"%d" % (group.id), None,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/__init__.py
index 761f757..d54f665 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/__init__.py
@@ -283,14 +283,14 @@ class DatabaseView(PGChildNodeView):
)
status, res = conn.execute_dict(SQL)
+ if not status:
+ return internal_server_error(errormsg=res)
+
if len(res['rows']) == 0:
return gone(
_("Could not find the database on the server.")
)
- if not status:
- return internal_server_error(errormsg=res)
-
SQL = render_template(
"/".join([self.template_path, 'acl.sql']),
did=did, conn=conn
@@ -859,9 +859,15 @@ class DatabaseView(PGChildNodeView):
did=did, conn=conn, last_system_oid=0
)
status, res = conn.execute_dict(SQL)
+
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the database on the server.")
+ )
+
SQL = render_template(
"/".join([self.template_path, 'acl.sql']),
did=did, conn=self.conn
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py
index 7fc72d5..71dc0ab 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py
@@ -20,9 +20,11 @@ from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class CastModule(CollectionNodeModule):
"""
@@ -413,6 +415,9 @@ class CastView(PGChildNodeView):
)
try:
sql, name = self.get_sql(gid, sid, did, data, cid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
status, res = self.conn.execute_scalar(sql)
if not status:
return internal_server_error(errormsg=res)
@@ -503,6 +508,9 @@ class CastView(PGChildNodeView):
"""
data = request.args
sql, name = self.get_sql(gid, sid, did, data, cid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -536,6 +544,11 @@ class CastView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the specified cast on the server.")
+ )
+
old_data = res['rows'][0]
sql = render_template(
"/".join([self.template_path, 'update.sql']),
diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py
index 547daed..671b6f4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py
@@ -17,11 +17,13 @@ from flask_babel import gettext
from pgadmin.browser.collection import CollectionNodeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class EventTriggerModule(CollectionNodeModule):
@@ -427,6 +429,9 @@ class EventTriggerView(PGChildNodeView):
try:
sql = self.get_sql(data, etid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql != "":
status, res = self.conn.execute_scalar(sql)
@@ -539,6 +544,9 @@ class EventTriggerView(PGChildNodeView):
data[k] = v
try:
sql = self.get_sql(data, etid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -628,6 +636,11 @@ class EventTriggerView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the specified event trigger on the server.")
+ )
+
result = res['rows'][0]
result = self._formatter(result)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py
index e776b61..aed393e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py
@@ -18,10 +18,8 @@ from flask_babel import gettext
from pgadmin.browser.collection import CollectionNodeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, \
- make_response as ajax_response, internal_server_error
+ make_response as ajax_response, internal_server_error, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
# As unicode type is not available in python3
@@ -214,7 +212,7 @@ class ExtensionView(PGChildNodeView):
status=200
)
- return gone(gettext("Could not find the specified event trigger."))
+ return gone(gettext("Could not find the specified extension."))
@check_precondition
def properties(self, gid, sid, did, eid):
@@ -301,6 +299,9 @@ class ExtensionView(PGChildNodeView):
try:
SQL, name = self.getSQL(gid, sid, data, did, eid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -372,6 +373,9 @@ class ExtensionView(PGChildNodeView):
data = request.args.copy()
try:
SQL, name = self.getSQL(gid, sid, data, did, eid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
if SQL == '':
SQL = "--modified SQL"
@@ -469,6 +473,10 @@ class ExtensionView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the extension on the server.")
+ )
result = res['rows'][0]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py
index fdfdcba..0bed261 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py
@@ -20,11 +20,13 @@ from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db, \
parse_priv_to_db, validate_options, tokenize_options
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class ForeignDataWrapperModule(CollectionNodeModule):
@@ -441,7 +443,9 @@ class ForeignDataWrapperView(PGChildNodeView):
try:
sql, name = self.get_sql(gid, sid, data, did, fid)
-
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
status, res = self.conn.execute_scalar(sql)
if not status:
return internal_server_error(errormsg=res)
@@ -535,7 +539,9 @@ class ForeignDataWrapperView(PGChildNodeView):
data[k] = v
try:
sql, name = self.get_sql(gid, sid, data, did, fid)
-
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
if sql == '':
sql = "--modified SQL"
@@ -649,6 +655,10 @@ class ForeignDataWrapperView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the foreign data wrapper on the server.")
+ )
is_valid_options = False
if res['rows'][0]['fdwoptions'] is not None:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py
index 58cf972..7b2da99 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py
@@ -20,11 +20,13 @@ from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db, \
parse_priv_to_db, validate_options, tokenize_options
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class ForeignServerModule(CollectionNodeModule):
@@ -446,6 +448,9 @@ class ForeignServerView(PGChildNodeView):
try:
sql, name = self.get_sql(gid, sid, data, did, fid, fsid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
if not status:
@@ -546,6 +551,9 @@ class ForeignServerView(PGChildNodeView):
data[k] = v
try:
sql, name = self.get_sql(gid, sid, data, did, fid, fsid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
if sql == '':
sql = "--modified SQL"
@@ -580,6 +588,10 @@ class ForeignServerView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the foreign server information.")
+ )
if res['rows'][0]['fsrvoptions'] is not None:
res['rows'][0]['fsrvoptions'] = tokenize_options(
@@ -662,6 +674,10 @@ class ForeignServerView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the foreign server information.")
+ )
is_valid_options = False
if res['rows'][0]['fsrvoptions'] is not None:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/__init__.py
index 636192d..c6a131d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/__init__.py
@@ -20,11 +20,13 @@ from flask_babel import gettext
from pgadmin.browser.collection import CollectionNodeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class UserMappingModule(CollectionNodeModule):
@@ -452,6 +454,9 @@ class UserMappingView(PGChildNodeView):
)
try:
sql, name = self.get_sql(gid, sid, data, did, fid, fsid, umid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
if not status:
@@ -572,6 +577,9 @@ class UserMappingView(PGChildNodeView):
data[k] = v
try:
sql, name = self.get_sql(gid, sid, data, did, fid, fsid, umid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
if sql == '':
sql = "--modified SQL"
@@ -606,6 +614,10 @@ class UserMappingView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the user mapping information.")
+ )
if res['rows'][0]['umoptions'] is not None:
res['rows'][0]['umoptions'] = tokenize_options(
@@ -683,6 +695,10 @@ class UserMappingView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the user mapping information.")
+ )
is_valid_options = False
if res['rows'][0]['umoptions'] is not None:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py
index b7a1cf6..1fe2248 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py
@@ -20,11 +20,13 @@ from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db, \
parse_priv_to_db
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class LanguageModule(CollectionNodeModule):
@@ -392,6 +394,9 @@ class LanguageView(PGChildNodeView):
try:
sql, name = self.get_sql(data, lid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_dict(sql)
if not status:
@@ -531,6 +536,9 @@ class LanguageView(PGChildNodeView):
data[k] = v
try:
sql, name = self.get_sql(data, lid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
if sql == '':
sql = "--modified SQL"
@@ -644,6 +652,11 @@ class LanguageView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the language information.")
+ )
+
# Making copy of output for future use
old_data = dict(res['rows'][0])
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py
index 48ecadc..9cbbf62 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py
@@ -19,11 +19,13 @@ from pgadmin.browser.server_groups.servers.databases.schemas.utils \
import SchemaChildModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class CollationModule(SchemaChildModule):
@@ -315,7 +317,9 @@ class CollationView(PGChildNodeView):
return internal_server_error(errormsg=res)
if len(res['rows']) == 0:
- return gone(gettext("""Could not find the collation object in the database. It may have been removed by another user."""))
+ return gone(
+ gettext("Could not find the collation object in the database.")
+ )
return ajax_response(
response=res['rows'][0],
@@ -535,6 +539,9 @@ class CollationView(PGChildNodeView):
request.data, encoding='utf-8'
)
SQL, name = self.get_sql(gid, sid, data, scid, coid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
@@ -581,6 +588,9 @@ class CollationView(PGChildNodeView):
try:
SQL, name = self.get_sql(gid, sid, data, scid, coid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
if SQL == '':
SQL = "--modified SQL"
@@ -602,6 +612,11 @@ class CollationView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the collation object in the database.")
+ )
+
old_data = res['rows'][0]
SQL = render_template(
"/".join([self.template_path, 'update.sql']),
@@ -643,6 +658,10 @@ class CollationView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the collation object in the database.")
+ )
data = res['rows'][0]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py
index 1827644..cecdcd9 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py
@@ -23,8 +23,11 @@ from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class DomainModule(SchemaChildModule):
@@ -528,6 +531,9 @@ AND relkind != 'c'))"""
data = self.request
SQL, name = self.get_sql(gid, sid, data, scid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -635,28 +641,30 @@ AND relkind != 'c'))"""
"""
SQL, name = self.get_sql(gid, sid, self.request, scid, doid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
- if SQL:
- status, res = self.conn.execute_scalar(SQL)
- if not status:
- return internal_server_error(errormsg=res)
+ status, res = self.conn.execute_scalar(SQL)
+ if not status:
+ return internal_server_error(errormsg=res)
- # Get Schema Id
- SQL = render_template("/".join([self.template_path,
- 'get_oid.sql']),
- doid=doid)
- status, scid = self.conn.execute_scalar(SQL)
- if not status:
- return internal_server_error(errormsg=res)
+ # Get Schema Id
+ SQL = render_template("/".join([self.template_path,
+ 'get_oid.sql']),
+ doid=doid)
+ status, scid = self.conn.execute_scalar(SQL)
+ if not status:
+ return internal_server_error(errormsg=res)
- return jsonify(
- node=self.blueprint.generate_browser_node(
- doid,
- scid,
- name,
- icon="icon-%s" % self.node_type
- )
+ return jsonify(
+ node=self.blueprint.generate_browser_node(
+ doid,
+ scid,
+ name,
+ icon="icon-%s" % self.node_type
)
+ )
@check_precondition
def sql(self, gid, sid, did, scid, doid=None):
@@ -676,7 +684,12 @@ AND relkind != 'c'))"""
scid=scid, doid=doid)
status, res = self.conn.execute_dict(SQL)
if not status:
- return False, internal_server_error(errormsg=res)
+ return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the specified domain.")
+ )
+
data = res['rows'][0]
# Get Type Length and Precision
@@ -733,6 +746,9 @@ AND relkind != 'c'))"""
try:
SQL, name = self.get_sql(gid, sid, self.request, scid, doid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
if SQL == '':
SQL = "--modified SQL"
@@ -763,6 +779,10 @@ AND relkind != 'c'))"""
if not status:
return False, internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the specified domain.")
+ )
old_data = res['rows'][0]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py
index b612cbe..e6c26f4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py
@@ -19,10 +19,8 @@ from flask_babel import gettext
from pgadmin.browser.collection import CollectionNodeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
@@ -366,7 +364,9 @@ class DomainConstraintView(PGChildNodeView):
status=200
)
- return gone(gettext("Could not find the specified domain constraint."))
+ return gone(
+ gettext("Could not find the specified domain constraint.")
+ )
@check_precondition
def properties(self, gid, sid, did, scid, doid, coid):
@@ -421,7 +421,7 @@ class DomainConstraintView(PGChildNodeView):
try:
status, SQL = self.get_sql(gid, sid, data, scid, doid)
if not status:
- return internal_server_error(errormsg=SQL)
+ return SQL
status, res = self.conn.execute_scalar(SQL)
@@ -527,6 +527,8 @@ class DomainConstraintView(PGChildNodeView):
"""
data = self.request
status, SQL = self.get_sql(gid, sid, data, scid, doid, coid)
+ if not status:
+ return SQL
try:
if SQL and status:
@@ -594,6 +596,11 @@ class DomainConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(gettext(
+ "Could not find the specified domain constraint."
+ )
+ )
data = res['rows'][0]
@@ -661,6 +668,11 @@ class DomainConstraintView(PGChildNodeView):
if not status:
return False, internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return False, gone(gettext(
+ "Could not find the specified domain constraint."
+ )
+ )
old_data = res['rows'][0]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py
index 60a21d7..15455e8 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py
@@ -28,8 +28,11 @@ from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class ForeignTableModule(SchemaChildModule):
@@ -449,13 +452,10 @@ class ForeignTableView(PGChildNodeView, DataTypeReader):
foid: Foreign Table Id
"""
data = self._fetch_properties(gid, sid, did, scid, foid)
-
- if not data:
- return gone(gettext("""
-Could not find the foreign table in the database.
-It may have been removed by another user or
-shifted to the another schema.
-"""))
+ if data == False:
+ return gone(
+ gettext("Could not find the foreign table on the server.")
+ )
return ajax_response(
response=data,
@@ -662,6 +662,10 @@ shifted to the another schema.
try:
# Get SQL to create Foreign Table
SQL, name = self.get_sql(gid, sid, did, scid, self.request)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
status, res = self.conn.execute_scalar(SQL)
if not status:
return internal_server_error(errormsg=res)
@@ -771,6 +775,10 @@ shifted to the another schema.
try:
SQL, name = self.get_sql(gid, sid, did, scid, self.request, foid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -809,6 +817,10 @@ shifted to the another schema.
foid: Foreign Table Id
"""
data = self._fetch_properties(gid, sid, did, scid, foid, inherits=True)
+ if data == False:
+ return gone(
+ gettext("Could not find the foreign table on the server.")
+ )
col_data = []
for c in data['columns']:
@@ -850,6 +862,10 @@ shifted to the another schema.
"""
try:
SQL, name = self.get_sql(gid, sid, did, scid, self.request, foid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
if SQL == '':
SQL = "--modified SQL"
@@ -874,10 +890,10 @@ shifted to the another schema.
if foid is not None:
old_data = self._fetch_properties(gid, sid, did, scid, foid,
inherits=True)
-
- if not old_data:
- return gone(gettext("Could not find the foreign table in the database." +
- " It may have been removed by another user or shifted to the another schema."))
+ if old_data == False:
+ return gone(
+ gettext("Could not find the foreign table on the server.")
+ )
# Prepare dict of columns with key = column's attnum
# Will use this in the update template when any column is
@@ -1178,6 +1194,10 @@ shifted to the another schema.
SELECT Script sql for the object
"""
data = self._fetch_properties(gid, sid, did, scid, foid)
+ if data == False:
+ return gone(
+ gettext("Could not find the foreign table on the server.")
+ )
columns = []
for c in data['columns']:
@@ -1211,6 +1231,10 @@ shifted to the another schema.
INSERT Script sql for the object
"""
data = self._fetch_properties(gid, sid, did, scid, foid)
+ if data == False:
+ return gone(
+ gettext("Could not find the foreign table on the server.")
+ )
columns = []
values = []
@@ -1249,6 +1273,10 @@ shifted to the another schema.
UPDATE Script sql for the object
"""
data = self._fetch_properties(gid, sid, did, scid, foid)
+ if data == False:
+ return gone(
+ gettext("Could not find the foreign table on the server.")
+ )
columns = []
@@ -1290,6 +1318,10 @@ shifted to the another schema.
DELETE Script sql for the object
"""
data = self._fetch_properties(gid, sid, did, scid, foid)
+ if data == False:
+ return gone(
+ gettext("Could not find the foreign table on the server.")
+ )
sql = u"DELETE FROM {0}\n\tWHERE <condition>;".format(
self.qtIdent(self.conn, data['basensp'], data['name'])
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py
index c482708..63ba26d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py
@@ -21,8 +21,11 @@ from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class FtsConfigurationModule(SchemaChildModule):
@@ -481,6 +484,9 @@ class FtsConfigurationView(PGChildNodeView):
)
# Fetch sql query to update fts Configuration
sql, name = self.get_sql(gid, sid, did, scid, data, cfgid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
if not status:
@@ -597,6 +603,10 @@ class FtsConfigurationView(PGChildNodeView):
# Fetch sql query for modified data
SQL, name = self.get_sql(gid, sid, did, scid, data, cfgid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
if SQL == '':
SQL = "-- No change"
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py
index 82cede4..f0f619e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py
@@ -21,8 +21,11 @@ from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class FtsDictionaryModule(SchemaChildModule):
@@ -481,6 +484,10 @@ class FtsDictionaryView(PGChildNodeView):
# Fetch sql query to update fts dictionary
sql, name = self.get_sql(gid, sid, did, scid, data, dcid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
+
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
if not status:
@@ -594,6 +601,10 @@ class FtsDictionaryView(PGChildNodeView):
# Fetch sql query for modified data
SQL, name = self.get_sql(gid, sid, did, scid, data, dcid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
if SQL == '':
SQL = "--modified SQL"
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/__init__.py
index b11bfeb..f80b4a1 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/__init__.py
@@ -20,8 +20,11 @@ from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class FtsParserModule(SchemaChildModule):
@@ -401,6 +404,10 @@ class FtsParserView(PGChildNodeView):
)
# Fetch sql query to update fts parser
sql, name = self.get_sql(gid, sid, did, scid, data, pid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
+
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
if not status:
@@ -514,6 +521,9 @@ class FtsParserView(PGChildNodeView):
# Fetch sql query for modified data
SQL, name = self.get_sql(gid, sid, did, scid, data, pid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
if SQL == '':
SQL = "--modified SQL"
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py
index 4aa9ce4..fa4df5d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py
@@ -20,8 +20,11 @@ from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class FtsTemplateModule(SchemaChildModule):
@@ -291,7 +294,9 @@ class FtsTemplateView(PGChildNodeView):
return internal_server_error(errormsg=res)
if len(res['rows']) == 0:
- return gone(gettext("""Could not find the FTS template node in the database."""))
+ return gone(
+ gettext("Could not find the requested FTS template.")
+ )
return ajax_response(
response=res['rows'][0],
@@ -385,6 +390,9 @@ class FtsTemplateView(PGChildNodeView):
# Fetch sql query to update fts template
sql, name = self.get_sql(gid, sid, did, scid, data, tid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
if not status:
@@ -483,6 +491,10 @@ class FtsTemplateView(PGChildNodeView):
# Fetch sql query for modified data
# Fetch sql query for modified data
SQL, name = self.get_sql(gid, sid, did, scid, data, tid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
if SQL == '':
SQL = "--modified SQL"
@@ -512,6 +524,10 @@ class FtsTemplateView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the requested FTS template.")
+ )
old_data = res['rows'][0]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py
index 4d9b9a6..e292135 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py
@@ -436,9 +436,14 @@ class FunctionView(PGChildNodeView, DataTypeReader):
"""
resp_data = self._fetch_properties(gid, sid, did, scid, fnid)
+ # Most probably this is due to error
+ if not isinstance(resp_data, dict):
+ return resp_data
if len(resp_data) == 0:
- return gone(gettext("""Could not find the function node in the database."""))
+ return gone(
+ gettext("Could not find the function node in the database.")
+ )
return ajax_response(
response=resp_data,
@@ -871,6 +876,9 @@ class FunctionView(PGChildNodeView, DataTypeReader):
return internal_server_error(errormsg=res)
resp_data = self._fetch_properties(gid, sid, did, scid, fnid)
+ # Most probably this is due to error
+ if not isinstance(resp_data, dict):
+ return resp_data
if self.node_type == 'procedure':
obj_name = resp_data['name_with_args']
@@ -916,6 +924,10 @@ class FunctionView(PGChildNodeView, DataTypeReader):
fnid: Function Id
"""
resp_data = self._fetch_properties(gid, sid, did, scid, fnid)
+ # Most probably this is due to error
+ if not isinstance(resp_data, dict):
+ return resp_data
+
# Fetch the function definition.
args = u''
args_without_name = []
@@ -1087,6 +1099,11 @@ class FunctionView(PGChildNodeView, DataTypeReader):
# Fetch Old Data from database.
old_data = self._fetch_properties(gid, sid, did, scid, fnid)
+ # Most probably this is due to error
+ if not isinstance(old_data, dict):
+ return False, gettext(
+ "Could not find the function in the database."
+ )
# Get Schema Name
old_data['pronamespace'] = self._get_schema(old_data[
@@ -1250,10 +1267,9 @@ class FunctionView(PGChildNodeView, DataTypeReader):
return internal_server_error(errormsg=res)
if len(res['rows']) == 0:
- return gone(gettext("""
-Could not find the function in the database.\n
-It may have been removed by another user or moved to another schema.
-"""))
+ return gone(
+ gettext("Could not find the function in the database.")
+ )
resp_data = res['rows'][0]
@@ -1393,6 +1409,9 @@ It may have been removed by another user or moved to another schema.
doid: Function Id
"""
resp_data = self._fetch_properties(gid, sid, did, scid, fnid)
+ # Most probably this is due to error
+ if not isinstance(resp_data, dict):
+ return resp_data
# Fetch the schema name from OID
if 'pronamespace' in resp_data:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py
index 9f8157a..55beb31 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py
@@ -21,11 +21,14 @@ from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db, \
parse_priv_to_db
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, \
- make_response as ajax_response, internal_server_error
-from pgadmin.utils.ajax import precondition_required, gone
+ make_response as ajax_response, internal_server_error, \
+ precondition_required, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class PackageModule(SchemaChildModule):
@@ -244,6 +247,49 @@ class PackageView(PGChildNodeView):
status=200
)
+ @check_precondition(action='node')
+ def node(self, gid, sid, did, scid, pkgid):
+ """
+ This function will show the selected package node.
+
+ Args:
+ gid: Server Group ID
+ sid: Server ID
+ did: Database ID
+ scid: Schema ID
+ pkgid: Package ID
+
+ Returns:
+
+ """
+ SQL = render_template(
+ "/".join([self.template_path, 'properties.sql']),
+ scid=scid, pkgid=pkgid
+ )
+ status, rset = self.conn.execute_dict(SQL)
+
+ if not status:
+ return internal_server_error(errormsg=res)
+
+ if len(rset['rows']) == 0:
+ return gone(
+ errormsg=_("Could not find the package in the database.")
+ )
+
+ for row in rset['rows']:
+ res.append(
+ self.blueprint.generate_browser_node(
+ row['oid'],
+ scid,
+ row['name'],
+ icon="icon-%s" % self.node_type
+ ))
+
+ return make_json_response(
+ data=res,
+ status=200
+ )
+
@check_precondition(action='properties')
def properties(self, gid, sid, did, scid, pkgid):
"""
@@ -440,6 +486,10 @@ class PackageView(PGChildNodeView):
)
SQL, name = self.getSQL(gid, sid, did, data, scid, pkgid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -491,6 +541,10 @@ class PackageView(PGChildNodeView):
)
SQL, name = self.getSQL(gid, sid, did, data, scid, pkgid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
SQL = SQL.strip('\n').strip(' ')
if SQL == '':
SQL = "--modified SQL"
@@ -521,6 +575,10 @@ class PackageView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ errormsg=_("Could not find the package in the database.")
+ )
res['rows'][0]['pkgheadsrc'] = self.get_inner(res['rows'][0]['pkgheadsrc'])
res['rows'][0]['pkgbodysrc'] = self.get_inner(res['rows'][0]['pkgbodysrc'])
@@ -586,6 +644,10 @@ class PackageView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ errormsg=_("Could not find the package in the database.")
+ )
res['rows'][0]['pkgheadsrc'] = self.get_inner(res['rows'][0]['pkgheadsrc'])
res['rows'][0]['pkgbodysrc'] = self.get_inner(res['rows'][0]['pkgbodysrc'])
@@ -604,6 +666,10 @@ class PackageView(PGChildNodeView):
result = res['rows'][0]
sql, name = self.getSQL(gid, sid, did, result, scid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
+
sql = sql.strip('\n').strip(' ')
sql_header = u"-- Package: {}\n\n-- ".format(
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py
index b2062fe..c16d48a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py
@@ -331,10 +331,9 @@ class EdbFuncView(PGChildNodeView, DataTypeReader):
return internal_server_error(errormsg=res)
if len(res['rows']) == 0:
- return gone(gettext("""
-Could not find the function in the database.\n
-It may have been removed by another user or moved to another schema.
-"""))
+ return gone(
+ gettext("Could not find the function in the database.")
+ )
resp_data = res['rows'][0]
@@ -527,6 +526,10 @@ It may have been removed by another user or moved to another schema.
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the function in the database.")
+ )
body = self.get_inner(res['rows'][0]['pkgbodysrc'])
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py
index 4de84e9..96d7891 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py
@@ -283,9 +283,8 @@ class EdbVarView(PGChildNodeView, DataTypeReader):
return internal_server_error(errormsg=res)
if len(res['rows']) == 0:
- return ajax_response(
- response=resp_data,
- status=200
+ return gone(
+ errormsg=gettext("Could not find the variables")
)
resp_data = res['rows'][0]
@@ -315,6 +314,11 @@ class EdbVarView(PGChildNodeView, DataTypeReader):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ errormsg=gettext("Could not find the variables")
+ )
+
var = res['rows'][0]
sql = u"-- Package Variable: {}".format(var['name'])
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py
index 05354d6..d886596 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py
@@ -21,11 +21,13 @@ from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db, \
parse_priv_to_db
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class SequenceModule(SchemaChildModule):
@@ -253,7 +255,7 @@ class SequenceView(PGChildNodeView):
return internal_server_error(errormsg=res)
if len(res['rows']) == 0:
- return gone(_("""Could not find the sequence in the database."""))
+ return gone(_("Could not find the sequence in the database."))
for row in res['rows']:
SQL = render_template("/".join([self.template_path, 'get_def.sql']), data=row)
@@ -450,6 +452,10 @@ class SequenceView(PGChildNodeView):
request.data, encoding='utf-8'
)
SQL, name = self.getSQL(gid, sid, did, data, scid, seid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
@@ -510,6 +516,10 @@ class SequenceView(PGChildNodeView):
)
)
SQL, name = self.getSQL(gid, sid, did, data, scid, seid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
+
SQL = SQL.strip('\n').strip(' ')
if SQL == '':
SQL = "--modified SQL"
@@ -540,6 +550,9 @@ class SequenceView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("Could not find the sequence in the database."))
+
# Making copy of output for further processing
old_data = dict(res['rows'][0])
old_data = self._formatter(old_data, scid, seid)
@@ -588,6 +601,8 @@ class SequenceView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("Could not find the sequence in the database."))
for row in res['rows']:
SQL = render_template("/".join([self.template_path, 'get_def.sql']), data=row)
@@ -605,6 +620,9 @@ class SequenceView(PGChildNodeView):
result = res['rows'][0]
result = self._formatter(result, scid, seid)
SQL, name = self.getSQL(gid, sid, did, result, scid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
return ajax_response(response=SQL)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py
index cdfdaf4..50fd219 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py
@@ -19,11 +19,14 @@ from pgadmin.browser.server_groups.servers.databases.schemas.utils \
import SchemaChildModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, \
- make_response as ajax_response, internal_server_error
+ make_response as ajax_response, internal_server_error, gone
from pgadmin.utils.ajax import precondition_required
from pgadmin.utils.driver import get_driver
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class SynonymModule(SchemaChildModule):
@@ -527,6 +530,9 @@ class SynonymView(PGChildNodeView):
request.data, encoding='utf-8'
)
SQL = self.get_sql(gid, sid, data, scid, syid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
try:
if SQL and SQL.strip('\n') and SQL.strip(' '):
status, res = self.conn.execute_scalar(SQL)
@@ -566,6 +572,9 @@ class SynonymView(PGChildNodeView):
try:
SQL = self.get_sql(gid, sid, data, scid, syid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
if SQL and SQL.strip('\n') and SQL.strip(' '):
return make_json_response(
data=SQL,
@@ -585,6 +594,10 @@ class SynonymView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the synonym on the server.")
+ )
old_data = res['rows'][0]
# If target schema/object is not present then take it from
# old data, it means it does not changed
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py
index 19db830..d9e688e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py
@@ -22,11 +22,13 @@ from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db, \
parse_priv_to_db
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class ColumnsModule(CollectionNodeModule):
@@ -688,6 +690,8 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
data['hasSqrBracket'] = self.hasSqrBracket
SQL, name = self.get_sql(scid, tid, clid, data)
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -733,6 +737,8 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
try:
SQL, name = self.get_sql(scid, tid, clid, data)
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
if SQL == '':
@@ -758,7 +764,10 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
-
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the column on the server.")
+ )
old_data = dict(res['rows'][0])
# We will add table & schema as well
old_data = self._formatter(scid, tid, clid, old_data)
@@ -834,6 +843,10 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the column on the server.")
+ )
data = dict(res['rows'][0])
# We do not want to display length as -1 in create query
@@ -851,6 +864,8 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
data = self._formatter(scid, tid, clid, data)
SQL, name = self.get_sql(scid, tid, None, data)
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
sql_header = u"-- Column: {0}\n\n-- ".format(self.qtIdent(self.conn,
data['schema'],
@@ -966,6 +981,10 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the column on the server.")
+ )
data = dict(res['rows'][0])
column = data['name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py
index 39fbb8f..e3022ab 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py
@@ -20,10 +20,8 @@ from pgadmin.browser.server_groups.servers.databases.schemas.tables.constraints.
import ConstraintRegistry
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-from pgadmin.utils.ajax import gone
-
from config import PG_DEFAULT_DRIVER
@@ -450,6 +448,10 @@ class CheckConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the object on the server.")
+ )
data = res['rows'][0]
return ajax_response(
@@ -646,6 +648,8 @@ class CheckConstraintView(PGChildNodeView):
data['table'] = self.table
SQL, name = self.get_sql(gid, sid, data, scid, tid, cid)
+ if not SQL:
+ return name
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
@@ -697,6 +701,10 @@ class CheckConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the object on the server.")
+ )
data = res['rows'][0]
data['schema'] = self.schema
@@ -744,6 +752,8 @@ class CheckConstraintView(PGChildNodeView):
data['table'] = self.table
try:
sql, name = self.get_sql(gid, sid, data, scid, tid, cid)
+ if not sql:
+ return name
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -775,6 +785,10 @@ class CheckConstraintView(PGChildNodeView):
if not status:
return False, internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return False, gone(
+ _("Could not find the object on the server.")
+ )
old_data = res['rows'][0]
required_args = ['name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py
index 114872d..b868503 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py
@@ -19,11 +19,13 @@ from pgadmin.browser.server_groups.servers.databases.schemas.tables.constraints.
import ConstraintRegistry, ConstraintTypeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class ExclusionConstraintModule(ConstraintTypeModule):
@@ -637,6 +639,8 @@ class ExclusionConstraintView(PGChildNodeView):
data['schema'] = self.schema
data['table'] = self.table
sql, name = self.get_sql(data, did, tid, exid)
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
if not status:
@@ -752,6 +756,8 @@ class ExclusionConstraintView(PGChildNodeView):
data['table'] = self.table
try:
sql, name = self.get_sql(data, did, tid, exid)
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -783,6 +789,8 @@ class ExclusionConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("Could not find the exclusion constraint."))
old_data = res['rows'][0]
required_args = ['name']
@@ -830,6 +838,8 @@ class ExclusionConstraintView(PGChildNodeView):
status, result = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=result)
+ if len(result['rows']) == 0:
+ return gone(_("Could not find the exclusion constraint."))
data = result['rows'][0]
data['schema'] = self.schema
@@ -916,6 +926,8 @@ class ExclusionConstraintView(PGChildNodeView):
status, result = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=result)
+ if len(result['rows']) == 0:
+ return gone(_("Could not find the exclusion constraint."))
data = result['rows'][0]
name = data['name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py
index 0ca88e1..be30610 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py
@@ -19,11 +19,13 @@ from pgadmin.browser.server_groups.servers.databases.schemas.tables.constraints.
import ConstraintRegistry, ConstraintTypeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class ForeignKeyConstraintModule(ConstraintTypeModule):
@@ -683,6 +685,8 @@ class ForeignKeyConstraintView(PGChildNodeView):
data['schema'] = self.schema
data['table'] = self.table
sql, name = self.get_sql(data, tid, fkid)
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
@@ -805,6 +809,8 @@ class ForeignKeyConstraintView(PGChildNodeView):
data['table'] = self.table
try:
sql, name = self.get_sql(data, tid, fkid)
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -833,6 +839,8 @@ class ForeignKeyConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("""Could not find the foreign key."""))
old_data = res['rows'][0]
required_args = ['name']
@@ -925,6 +933,8 @@ class ForeignKeyConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("""Could not find the foreign key."""))
data = res['rows'][0]
data['schema'] = self.schema
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py
index d5ee446..e7a12cc 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py
@@ -19,11 +19,13 @@ from pgadmin.browser.server_groups.servers.databases.schemas.tables.constraints.
import ConstraintRegistry, ConstraintTypeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class IndexConstraintModule(ConstraintTypeModule):
@@ -667,6 +669,8 @@ class IndexConstraintView(PGChildNodeView):
data['schema'] = self.schema
data['table'] = self.table
sql, name = self.get_sql(data, did, tid, cid)
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(sql)
@@ -787,6 +791,8 @@ class IndexConstraintView(PGChildNodeView):
data['table'] = self.table
try:
sql, name = self.get_sql(data, did, tid, cid)
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -819,6 +825,10 @@ class IndexConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("""Could not find the {} in the table.""".format(
+ "primary key" if self.constraint_type == "p" else "unique key"
+ )))
old_data = res['rows'][0]
required_args = [u'name']
@@ -884,6 +894,10 @@ class IndexConstraintView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("""Could not find the {} in the table.""".format(
+ "primary key" if self.constraint_type == "p" else "unique key"
+ )))
data = res['rows'][0]
data['schema'] = self.schema
@@ -957,6 +971,10 @@ class IndexConstraintView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(_("""Could not find the {} in the table.""".format(
+ "primary key" if self.constraint_type == "p" else "unique key"
+ )))
result = res['rows'][0]
name = result['name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py
index 6d8680d..e52c15b 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py
@@ -18,11 +18,13 @@ from flask_babel import gettext
from pgadmin.browser.collection import CollectionNodeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class IndexesModule(CollectionNodeModule):
@@ -724,6 +726,8 @@ class IndexesView(PGChildNodeView):
data['table'] = self.table
try:
SQL, name = self.get_sql(did, scid, tid, idx, data)
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -766,6 +770,8 @@ class IndexesView(PGChildNodeView):
try:
sql, name = self.get_sql(did, scid, tid, idx, data, mode='create')
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -789,6 +795,8 @@ class IndexesView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(gettext("""Could not find the index in the table."""))
old_data = dict(res['rows'][0])
@@ -848,6 +856,8 @@ class IndexesView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(gettext("""Could not find the index in the table."""))
data = dict(res['rows'][0])
# Adding parent into data dict, will be using it while creating sql
@@ -858,7 +868,8 @@ class IndexesView(PGChildNodeView):
data = self._column_details(idx, data)
SQL, name = self.get_sql(did, scid, tid, None, data)
-
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
sql_header = u"-- Index: {0}\n\n-- ".format(data['name'])
sql_header += render_template("/".join([self.template_path,
@@ -955,6 +966,10 @@ class IndexesView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("""Could not find the index in the table.""")
+ )
data = dict(res['rows'][0])
index = data['name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py
index 6071a6d..c318e52 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py
@@ -20,11 +20,13 @@ from pgadmin.browser.server_groups.servers.databases.schemas.utils import \
parse_rule_definition
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class RuleModule(CollectionNodeModule):
@@ -354,6 +356,8 @@ class RuleView(PGChildNodeView):
)
try:
SQL, name = self.getSQL(gid, sid, data, tid, rid)
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -430,6 +434,8 @@ class RuleView(PGChildNodeView):
"""
data = request.args
sql, name = self.getSQL(gid, sid, data, tid, rid)
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
@@ -449,6 +455,9 @@ class RuleView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(gettext("""Could not find the rule in the table."""))
+
res_data = parse_rule_definition(res)
SQL = render_template("/".join(
[self.template_path, 'create.sql']),
@@ -465,9 +474,12 @@ class RuleView(PGChildNodeView):
SQL = render_template("/".join(
[self.template_path, 'properties.sql']), rid=rid)
status, res = self.conn.execute_dict(SQL)
- res_data = parse_rule_definition(res)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(gettext("""Could not find the rule in the table."""))
+ res_data = parse_rule_definition(res)
+
old_data = res_data
SQL = render_template(
"/".join([self.template_path, 'update.sql']),
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py
index f3cf1f0..be0404f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py
@@ -18,11 +18,13 @@ from flask_babel import gettext
from pgadmin.browser.collection import CollectionNodeModule
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class TriggerModule(CollectionNodeModule):
@@ -734,6 +736,8 @@ class TriggerView(PGChildNodeView):
data['table'] = self.table
SQL, name = self.get_sql(scid, tid, trid, data)
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -786,7 +790,8 @@ class TriggerView(PGChildNodeView):
try:
sql, name = self.get_sql(scid, tid, trid, data)
-
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
sql = sql.strip('\n').strip(' ')
if sql == '':
@@ -835,6 +840,10 @@ class TriggerView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("""Could not find the trigger in the table.""")
+ )
old_data = dict(res['rows'][0])
@@ -900,6 +909,8 @@ class TriggerView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(gettext("""Could not find the trigger in the table."""))
data = dict(res['rows'][0])
# Adding parent into data dict, will be using it while creating sql
@@ -968,6 +979,10 @@ class TriggerView(PGChildNodeView):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("""Could not find the trigger in the table.""")
+ )
o_data = dict(res['rows'][0])
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py
index ed84916..031e1b7 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py
@@ -21,11 +21,13 @@ from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db, \
parse_priv_to_db
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response
+ make_response as ajax_response, gone
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class TypeModule(SchemaChildModule):
@@ -294,7 +296,7 @@ class TypeView(PGChildNodeView, DataTypeReader):
return internal_server_error(errormsg=rset)
if len(rset['rows']) == 0:
- return gone(gettext("""Could not find the type in the table."""))
+ return gone(gettext("""Could not find the type in the database."""))
res = self.blueprint.generate_browser_node(
rset['rows'][0]['oid'],
@@ -537,7 +539,7 @@ class TypeView(PGChildNodeView, DataTypeReader):
return internal_server_error(errormsg=res)
if len(res['rows']) == 0:
- return gone(gettext("""Could not find the type in the table."""))
+ return gone(gettext("""Could not find the type in the database."""))
# Making copy of output for future use
copy_dict = dict(res['rows'][0])
@@ -1000,6 +1002,9 @@ class TypeView(PGChildNodeView, DataTypeReader):
)
try:
SQL, name = self.get_sql(gid, sid, data, scid, tid)
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -1112,6 +1117,9 @@ class TypeView(PGChildNodeView, DataTypeReader):
try:
sql, name = self.get_sql(gid, sid, data, scid, tid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
sql = sql.strip('\n').strip(' ')
if sql == '':
@@ -1185,6 +1193,10 @@ class TypeView(PGChildNodeView, DataTypeReader):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the type in the database.")
+ )
# Making copy of output for future use
old_data = dict(res['rows'][0])
@@ -1263,7 +1275,10 @@ class TypeView(PGChildNodeView, DataTypeReader):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
-
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the type in the database.")
+ )
# Making copy of output for future use
data = dict(res['rows'][0])
@@ -1298,7 +1313,9 @@ class TypeView(PGChildNodeView, DataTypeReader):
data[k] = None
SQL, name = self.get_sql(gid, sid, data, scid, tid=None)
-
+ # Most probably this is due to error
+ if not isinstance(SQL, (str, unicode)):
+ return SQL
# We are appending headers here for sql panel
sql_header = u"-- Type: {0}\n\n-- ".format(data['name'])
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py
index aa5d5f3..0ead437 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py
@@ -19,12 +19,11 @@ from pgadmin.browser.server_groups.servers.databases.schemas.utils import \
SchemaChildModule, parse_rule_definition, VacuumSettings
from pgadmin.browser.utils import PGChildNodeView
from pgadmin.utils.ajax import make_json_response, internal_server_error, \
- make_response as ajax_response, bad_request
+ make_response as ajax_response, bad_request, gone
from pgadmin.utils.driver import get_driver
from pgadmin.browser.server_groups.servers.utils import parse_priv_from_db,\
parse_priv_to_db
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
"""
This module is responsible for generating two nodes
@@ -659,7 +658,10 @@ class ViewNode(PGChildNodeView, VacuumSettings):
status, res = self.conn.execute_dict(SQL)
if not status:
return None, internal_server_error(errormsg=res)
-
+ if len(res['rows']) == 0:
+ return None, gone(
+ gettext("Could not find the view on the server.")
+ )
old_data = res['rows'][0]
if 'name' not in data:
@@ -975,6 +977,10 @@ class ViewNode(PGChildNodeView, VacuumSettings):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the view on the server.")
+ )
result = res['rows'][0]
# sending result to formtter
@@ -1119,6 +1125,10 @@ class ViewNode(PGChildNodeView, VacuumSettings):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the view on the server.")
+ )
data_view = res['rows'][0]
SQL = render_template(
@@ -1176,6 +1186,11 @@ class ViewNode(PGChildNodeView, VacuumSettings):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the view on the server.")
+ )
+
data_view = res['rows'][0]
SQL = render_template(
@@ -1292,6 +1307,11 @@ class MViewNode(ViewNode, VacuumSettings):
status, res = self.conn.execute_dict(SQL)
if not status:
return None, internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return None, gone(
+ gettext("Could not find the materialized view on the server.")
+ )
+
old_data = res['rows'][0]
if 'name' not in data:
@@ -1480,6 +1500,10 @@ class MViewNode(ViewNode, VacuumSettings):
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ gettext("Could not find the materialized view on the server.")
+ )
result = res['rows'][0]
diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py b/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py
index 62f096b..912ed02 100644
--- a/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py
@@ -441,6 +441,12 @@ SELECT EXISTS(
if not status:
return internal_server_error(errormsg=res)
+
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the object on the server.")
+ )
+
row = res['rows'][0]
status, res= self.conn.execute_dict(
diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py
index 95aa1d8..cf945b0 100644
--- a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py
@@ -18,12 +18,14 @@ from flask_babel import gettext
from pgadmin.browser.collection import CollectionNodeModule
from pgadmin.browser.utils import NodeView
from pgadmin.utils.ajax import make_json_response, \
- make_response as ajax_response, internal_server_error
+ make_response as ajax_response, internal_server_error, gone
from pgadmin.utils.ajax import precondition_required
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
-from pgadmin.utils.ajax import gone
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class ResourceGroupModule(CollectionNodeModule):
@@ -518,6 +520,10 @@ class ResourceGroupView(NodeView):
data[k] = v
sql, name = self.get_sql(data, rg_id)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
+
sql = sql.strip('\n').strip(' ')
if sql == '':
@@ -543,6 +549,11 @@ class ResourceGroupView(NodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+
+ if len(res['rows']) == 0:
+ return gone(
+ _("The specified resource group could not be found.")
+ )
old_data = res['rows'][0]
for arg in required_args:
if arg not in data:
@@ -582,6 +593,10 @@ class ResourceGroupView(NodeView):
status, res = self.conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("The specified resource group could not be found.")
+ )
# Making copy of output for future use
old_data = dict(res['rows'][0])
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py b/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py
index 86effed..8c6411b 100644
--- a/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/__init__.py
@@ -21,8 +21,11 @@ from pgadmin.utils.ajax import make_json_response, \
make_response as ajax_response, internal_server_error, gone
from pgadmin.utils.ajax import precondition_required
from pgadmin.utils.driver import get_driver
-
from config import PG_DEFAULT_DRIVER
+from pgadmin.utils import IS_PY2
+# If we are in Python3
+if not IS_PY2:
+ unicode = str
class TablespaceModule(CollectionNodeModule):
@@ -350,6 +353,10 @@ class TablespaceView(PGChildNodeView):
try:
SQL, name = self.get_sql(gid, sid, data, tsid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return SQL
+
SQL = SQL.strip('\n').strip(' ')
status, res = self.conn.execute_scalar(SQL)
if not status:
@@ -433,6 +440,10 @@ class TablespaceView(PGChildNodeView):
data[k] = v
sql, name = self.get_sql(gid, sid, data, tsid)
+ # Most probably this is due to error
+ if not isinstance(sql, (str, unicode)):
+ return sql
+
sql = sql.strip('\n').strip(' ')
if sql == '':
sql = "--modified SQL"
@@ -458,6 +469,11 @@ class TablespaceView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the tablespace on the server.")
+ )
+
# Making copy of output for further processing
old_data = dict(res['rows'][0])
old_data = self._formatter(old_data, tsid)
@@ -512,6 +528,10 @@ class TablespaceView(PGChildNodeView):
if not status:
return internal_server_error(errormsg=res)
+ if len(res['rows']) == 0:
+ return gone(
+ _("Could not find the tablespace on the server.")
+ )
# Making copy of output for future use
old_data = dict(res['rows'][0])
^ permalink raw reply [nested|flat] 2+ messages in thread
* Re: [pgAdmin4] [PATCH] To fix error in SQL panel
@ 2017-05-25 20:29 Dave Page <[email protected]>
parent: Murtuza Zabuawala <[email protected]>
0 siblings, 0 replies; 2+ messages in thread
From: Dave Page @ 2017-05-25 20:29 UTC (permalink / raw)
To: Murtuza Zabuawala <[email protected]>; +Cc: pgadmin-hackers
Thanks applied.
On Thu, May 25, 2017 at 6:20 AM, Murtuza Zabuawala
<[email protected]> wrote:
> Hi,
>
> PFA patch to fix the issue which due to python side validations, at many
> places it was assumed that we will always get a row from query result.
> RM#2427
>
> Note: Almost all the database level nodes are affected by this patch.
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgadmin-hackers mailing list ([email protected])
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-hackers
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2017-05-25 20:29 UTC | newest]
Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2017-05-25 10:20 [pgAdmin4] [PATCH] To fix error in SQL panel Murtuza Zabuawala <[email protected]>
2017-05-25 20:29 ` Dave Page <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox