mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed the following issues found in testing #5908:
1. Filter buttons remain highlighted after promotion but the button is disabled. 2. Data changes are getting committed even when Auto commit is turned off on the promoted query tool window.
This commit is contained in:
@@ -52,7 +52,8 @@ from pgadmin.tools.sqleditor.utils.macros import get_macros,\
|
||||
get_user_macros, set_macros
|
||||
from pgadmin.utils.constants import MIMETYPE_APP_JS, \
|
||||
SERVER_CONNECTION_CLOSED, ERROR_MSG_TRANS_ID_NOT_FOUND, \
|
||||
ERROR_FETCHING_DATA, MY_STORAGE, ACCESS_DENIED_MESSAGE
|
||||
ERROR_FETCHING_DATA, MY_STORAGE, ACCESS_DENIED_MESSAGE, \
|
||||
ERROR_MSG_FAIL_TO_PROMOTE_QT
|
||||
from pgadmin.model import Server, ServerGroup
|
||||
from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry
|
||||
from pgadmin.settings import get_setting
|
||||
@@ -872,24 +873,11 @@ def start_query_tool(trans_id):
|
||||
)
|
||||
|
||||
connect = 'connect' in request.args and request.args['connect'] == '1'
|
||||
if 'gridData' in session and str(trans_id) in session['gridData']:
|
||||
data = pickle.loads(session['gridData'][str(trans_id)]['command_obj'])
|
||||
if data.object_type == 'table':
|
||||
manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(
|
||||
data.sid)
|
||||
default_conn = manager.connection(conn_id=data.conn_id,
|
||||
did=data.did)
|
||||
kwargs = {
|
||||
'user': default_conn.manager.user,
|
||||
'role': default_conn.manager.role,
|
||||
'password': default_conn.manager.password,
|
||||
'conn_id': data.conn_id
|
||||
}
|
||||
is_error, errmsg, conn_id, version = _init_sqleditor(
|
||||
trans_id, connect, data.sgid, data.sid, data.did, **kwargs)
|
||||
|
||||
if is_error:
|
||||
return errmsg
|
||||
is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect)
|
||||
if is_error:
|
||||
return make_json_response(success=0, errormsg=errmsg,
|
||||
info=ERROR_MSG_FAIL_TO_PROMOTE_QT,
|
||||
status=404)
|
||||
|
||||
return StartRunningQuery(blueprint, current_app.logger).execute(
|
||||
sql, trans_id, session, connect
|
||||
@@ -1734,6 +1722,29 @@ def get_object_name(trans_id):
|
||||
return make_json_response(data={'status': status, 'result': res})
|
||||
|
||||
|
||||
def check_and_upgrade_to_qt(trans_id, connect):
|
||||
is_error = False
|
||||
errmsg = None
|
||||
|
||||
if 'gridData' in session and str(trans_id) in session['gridData']:
|
||||
data = pickle.loads(session['gridData'][str(trans_id)]['command_obj'])
|
||||
if data.object_type == 'table':
|
||||
manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(
|
||||
data.sid)
|
||||
default_conn = manager.connection(conn_id=data.conn_id,
|
||||
did=data.did)
|
||||
kwargs = {
|
||||
'user': default_conn.manager.user,
|
||||
'role': default_conn.manager.role,
|
||||
'password': default_conn.manager.password,
|
||||
'conn_id': data.conn_id
|
||||
}
|
||||
is_error, errmsg, conn_id, version = _init_sqleditor(
|
||||
trans_id, connect, data.sgid, data.sid, data.did, **kwargs)
|
||||
|
||||
return is_error, errmsg
|
||||
|
||||
|
||||
@blueprint.route(
|
||||
'/auto_commit/<int:trans_id>',
|
||||
methods=["PUT", "POST"], endpoint='auto_commit'
|
||||
@@ -1751,6 +1762,14 @@ def set_auto_commit(trans_id):
|
||||
else:
|
||||
auto_commit = request.args or request.form
|
||||
|
||||
connect = 'connect' in request.args and request.args['connect'] == '1'
|
||||
|
||||
is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect)
|
||||
if is_error:
|
||||
return make_json_response(success=0, errormsg=errmsg,
|
||||
info=ERROR_MSG_FAIL_TO_PROMOTE_QT,
|
||||
status=404)
|
||||
|
||||
# Check the transaction and connection status
|
||||
status, error_msg, conn, trans_obj, session_obj = \
|
||||
check_transaction_status(trans_id)
|
||||
@@ -1796,6 +1815,14 @@ def set_auto_rollback(trans_id):
|
||||
else:
|
||||
auto_rollback = request.args or request.form
|
||||
|
||||
connect = 'connect' in request.args and request.args['connect'] == '1'
|
||||
|
||||
is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect)
|
||||
if is_error:
|
||||
return make_json_response(success=0, errormsg=errmsg,
|
||||
info=ERROR_MSG_FAIL_TO_PROMOTE_QT,
|
||||
status=404)
|
||||
|
||||
# Check the transaction and connection status
|
||||
status, error_msg, conn, trans_obj, session_obj = \
|
||||
check_transaction_status(trans_id)
|
||||
@@ -1848,6 +1875,14 @@ def auto_complete(trans_id):
|
||||
full_sql = data[0]
|
||||
text_before_cursor = data[1]
|
||||
|
||||
connect = 'connect' in request.args and request.args['connect'] == '1'
|
||||
|
||||
is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect)
|
||||
if is_error:
|
||||
return make_json_response(success=0, errormsg=errmsg,
|
||||
info=ERROR_MSG_FAIL_TO_PROMOTE_QT,
|
||||
status=404)
|
||||
|
||||
# Check the transaction and connection status
|
||||
status, error_msg, conn, trans_obj, session_obj = \
|
||||
check_transaction_status(trans_id, auto_comp=True)
|
||||
|
||||
@@ -275,6 +275,7 @@ export function MainToolBar({containerRef, onFilterClick, onManageMacros}) {
|
||||
|
||||
eventBus.registerListener(QUERY_TOOL_EVENTS.PROMOTE_TO_QUERY_TOOL, ()=>{
|
||||
setDisableButton('filter', true);
|
||||
setHighlightFilter(false);
|
||||
setDisableButton('limit', true);
|
||||
|
||||
setDisableButton('execute', false);
|
||||
|
||||
@@ -50,6 +50,9 @@ DATATYPE_TIMESTAMP_WITHOUT_TIMEZONE = 'timestamp without time zone'
|
||||
ERROR_MSG_TRANS_ID_NOT_FOUND = gettext(
|
||||
'Transaction ID not found in the session.')
|
||||
|
||||
ERROR_MSG_FAIL_TO_PROMOTE_QT = gettext('FAIL TO PROMOTE VIEW/EDIT DATA '
|
||||
'TO QUERY TOOL')
|
||||
|
||||
# Role module constant
|
||||
ERROR_FETCHING_ROLE_INFORMATION = gettext(
|
||||
'Error fetching role information from the database server.')
|
||||
|
||||
Reference in New Issue
Block a user