From 7bab200e4d6ebbc6bd969014cefa64b85f22e383 Mon Sep 17 00:00:00 2001 From: Pradip Parkale Date: Tue, 27 Apr 2021 11:58:47 +0530 Subject: [PATCH] Added more checks so that it will pick the correct shared server. refs #6385 --- .../browser/server_groups/servers/__init__.py | 11 ++++++----- web/pgadmin/browser/server_groups/servers/utils.py | 12 ++---------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py index 233ea07f8..105e90c8d 100644 --- a/web/pgadmin/browser/server_groups/servers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/__init__.py @@ -618,7 +618,7 @@ class ServerNode(PGChildNodeView): ), ) - def delete_shared_server(self, server_name, gid): + def delete_shared_server(self, server_name, gid, osid): """ Delete the shared server :param server_name: @@ -626,7 +626,8 @@ class ServerNode(PGChildNodeView): """ try: shared_server = SharedServer.query.filter_by(name=server_name, - servergroup_id=gid) + servergroup_id=gid, + osid=osid) for s in shared_server: get_driver(PG_DEFAULT_DRIVER).delete_manager(s.id) db.session.delete(s) @@ -662,7 +663,7 @@ class ServerNode(PGChildNodeView): get_driver(PG_DEFAULT_DRIVER).delete_manager(s.id) db.session.delete(s) db.session.commit() - self.delete_shared_server(server_name, gid) + self.delete_shared_server(server_name, gid, sid) QueryHistory.clear_history(current_user.id, sid) except Exception as e: @@ -819,7 +820,7 @@ class ServerNode(PGChildNodeView): if 'shared' in data and not data['shared']: # Delete the shared server from DB if server # owner uncheck shared property - self.delete_shared_server(server.name, gid) + self.delete_shared_server(server.name, gid, server.id) if arg == 'sslcompression': value = 1 if value else 0 self._update_server_details(server, sharedserver, @@ -1879,7 +1880,7 @@ class ServerNode(PGChildNodeView): if server.shared and server.user_id != current_user.id: shared_server = SharedServer.query.filter_by( name=server.name, user_id=current_user.id, - servergroup_id=gid).first() + servergroup_id=gid, osid=server.id).first() if shared_server is None: return make_json_response( diff --git a/web/pgadmin/browser/server_groups/servers/utils.py b/web/pgadmin/browser/server_groups/servers/utils.py index e07a6273a..69ddf6c39 100644 --- a/web/pgadmin/browser/server_groups/servers/utils.py +++ b/web/pgadmin/browser/server_groups/servers/utils.py @@ -282,15 +282,7 @@ def does_server_exists(sid, user_id): # **kwargs parameter can be added to function to filter with more # parameters. try: - if Server.query.filter_by(id=sid, user_id=user_id).first(): - server = Server.query.filter_by( - id=sid, user_id=user_id - ).first() - else: - server = SharedServer.query.filter_by( - id=sid, user_id=user_id - ).first() - - return True if server is not None else False + return True if Server.query.filter_by( + id=sid).first() is not None else False except Exception: return False