From 2ab5d2b6477d249668b6b4eb98f967ef0a0ac7ab Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Wed, 16 Nov 2022 14:37:54 +0530 Subject: [PATCH] Ensure that the correct error message in ERD for permission denied should be shown. #5537 --- web/pgadmin/static/js/api_instance.js | 3 +++ web/pgadmin/tools/erd/__init__.py | 5 +++-- .../tools/erd/static/js/erd_tool/components/ERDTool.jsx | 3 +-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/web/pgadmin/static/js/api_instance.js b/web/pgadmin/static/js/api_instance.js index fdeb108bb..f52a47cd8 100644 --- a/web/pgadmin/static/js/api_instance.js +++ b/web/pgadmin/static/js/api_instance.js @@ -40,6 +40,9 @@ export function parseApiError(error) { } else if(error.message) { // Something happened in setting up the request that triggered an Error return error.message; + } else if(error.errormsg) { + // Received response JSON in socket handle + return error.errormsg; } else { return error; } diff --git a/web/pgadmin/tools/erd/__init__.py b/web/pgadmin/tools/erd/__init__.py index 25005b276..8b642b9d5 100644 --- a/web/pgadmin/tools/erd/__init__.py +++ b/web/pgadmin/tools/erd/__init__.py @@ -10,7 +10,7 @@ """A blueprint module implementing the erd tool.""" import simplejson as json -from flask import url_for, request +from flask import url_for, request, Response from flask import render_template, current_app as app from flask_security import login_required from flask_babel import gettext @@ -640,10 +640,11 @@ def tables(params): params.get('tid', None)) if not status: + tables = tables.json if type(tables) == Response else tables socketio.emit('tables_failed', tables, namespace=SOCKETIO_NAMESPACE, to=request.sid) - return internal_server_error(errormsg=tables) + return socketio.emit('tables_success', tables, namespace=SOCKETIO_NAMESPACE, to=request.sid) except Exception as e: diff --git a/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx b/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx index 399cecb9f..f8a66ab4b 100644 --- a/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx +++ b/web/pgadmin/tools/erd/static/js/erd_tool/components/ERDTool.jsx @@ -286,8 +286,7 @@ class ERDTool extends React.Component { } handleAxiosCatch(err) { - console.error(err); - Notify.alert(gettext('Error'), parseApiError(err)); + this.context.alert(gettext('Error'), parseApiError(err)); } async componentDidMount() {