public inbox for [email protected]  
help / color / mirror / Atom feed
From: Pradip Parkale <[email protected]>
To: pgadmin-hackers <[email protected]>
Subject: [pgAdmin][RM6385]: Backup on a shared server doesn't seem to work
Date: Tue, 13 Apr 2021 22:35:32 +0530
Message-ID: <CAJ9T6SurWoKa6Z14F3wFGJtQbtFh+gCXt9vULSTciiR5AG4x1Q@mail.gmail.com> (raw)

Hi Hackers,

Please find the attached patch for #6385 Backup on a shared server doesn't
seem to work.



-- 
Thanks & Regards,
Pradip Parkale
Software Engineer | EnterpriseDB Corporation


Attachments:

  [application/octet-stream] RM6385.patch (8.6K, 3-RM6385.patch)
  download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py
index bc0bd4611..00025196b 100644
--- a/web/pgadmin/browser/server_groups/servers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/__init__.py
@@ -346,7 +346,7 @@ class ServerModule(sg.ServerGroupPluginModule):
                 host=data.host,
                 hostaddr=data.hostaddr,
                 port=data.port,
-                maintenance_db=None,
+                maintenance_db=data.maintenance_db,
                 username=None,
                 save_password=0,
                 ssl_mode=data.ssl_mode,
diff --git a/web/pgadmin/browser/server_groups/servers/utils.py b/web/pgadmin/browser/server_groups/servers/utils.py
index e074ea735..34892804c 100644
--- a/web/pgadmin/browser/server_groups/servers/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/utils.py
@@ -12,7 +12,7 @@ from ipaddress import ip_address
 
 from pgadmin.utils.crypto import encrypt, decrypt
 import config
-from pgadmin.model import db, Server
+from pgadmin.model import db, Server, SharedServer
 
 
 def is_valid_ipaddress(address):
@@ -283,8 +283,15 @@ def does_server_exists(sid, user_id):
     # **kwargs parameter can be added to function to filter with more
     # parameters.
     try:
-        return True if Server.query.filter_by(
-            id=sid, user_id=user_id
-        ).first() is not None else False
+        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
     except Exception:
         return False
diff --git a/web/pgadmin/tools/backup/__init__.py b/web/pgadmin/tools/backup/__init__.py
index 0d67804dd..aacb2e5d4 100644
--- a/web/pgadmin/tools/backup/__init__.py
+++ b/web/pgadmin/tools/backup/__init__.py
@@ -24,7 +24,7 @@ from pgadmin.utils import PgAdminModule, get_storage_directory, html, \
 from pgadmin.utils.ajax import make_json_response, bad_request
 
 from config import PG_DEFAULT_DRIVER
-from pgadmin.model import Server
+from pgadmin.model import Server, SharedServer
 from pgadmin.misc.bgprocess import escape_dquotes_process_arg
 from pgadmin.utils.constants import MIMETYPE_APP_JS
 
@@ -115,10 +115,15 @@ class BackupMessage(IProcessDesc):
                 self.cmd += cmd_arg(arg)
 
     def get_server_details(self):
-        # Fetch the server details like hostname, port, roles etc
-        s = Server.query.filter_by(
-            id=self.sid, user_id=current_user.id
-        ).first()
+        if Server.query.filter_by(id=self.sid,
+                                  user_id=current_user.id).first():
+            s = Server.query.filter_by(
+                id=self.sid, user_id=current_user.id
+            ).first()
+        else:
+            s = SharedServer.query.filter_by(
+                id=self.sid, user_id=current_user.id
+            ).first()
 
         from pgadmin.utils.driver import get_driver
         driver = get_driver(PG_DEFAULT_DRIVER)
@@ -417,9 +422,14 @@ def create_backup_objects_job(sid):
         return bad_request(errormsg=str(e))
 
     # Fetch the server details like hostname, port, roles etc
-    server = Server.query.filter_by(
-        id=sid, user_id=current_user.id
-    ).first()
+    if Server.query.filter_by(id=sid, user_id=current_user.id).first():
+        server = Server.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
+    else:
+        server = SharedServer.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
 
     if server is None:
         return make_json_response(
@@ -521,9 +531,14 @@ def check_utility_exists(sid, backup_obj_type):
     Returns:
         None
     """
-    server = Server.query.filter_by(
-        id=sid, user_id=current_user.id
-    ).first()
+    if Server.query.filter_by(id=sid, user_id=current_user.id).first():
+        server = Server.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
+    else:
+        server = SharedServer.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
 
     if server is None:
         return make_json_response(
diff --git a/web/pgadmin/tools/maintenance/__init__.py b/web/pgadmin/tools/maintenance/__init__.py
index cc84399b2..160573a1c 100644
--- a/web/pgadmin/tools/maintenance/__init__.py
+++ b/web/pgadmin/tools/maintenance/__init__.py
@@ -20,7 +20,7 @@ from pgadmin.utils.ajax import bad_request, make_json_response
 from pgadmin.utils.driver import get_driver
 
 from config import PG_DEFAULT_DRIVER
-from pgadmin.model import Server
+from pgadmin.model import Server, SharedServer
 from pgadmin.utils.constants import MIMETYPE_APP_JS
 
 MODULE_NAME = 'maintenance'
@@ -209,8 +209,14 @@ def create_maintenance_job(sid, did):
     index_name = get_index_name(data)
 
     # Fetch the server details like hostname, port, roles etc
-    server = Server.query.filter_by(
-        id=sid).first()
+    if Server.query.filter_by(id=sid, user_id=current_user.id).first():
+        server = Server.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
+    else:
+        server = SharedServer.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
 
     if server is None:
         return make_json_response(
@@ -300,9 +306,18 @@ def check_utility_exists(sid):
     Returns:
         None
     """
-    server = Server.query.filter_by(
-        id=sid, user_id=current_user.id
-    ).first()
+    # server = Server.query.filter_by(
+    #     id=sid, user_id=current_user.id
+    # ).first()
+
+    if Server.query.filter_by(id=sid, user_id=current_user.id).first():
+        server = Server.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
+    else:
+        server = SharedServer.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
 
     if server is None:
         return make_json_response(
diff --git a/web/pgadmin/tools/restore/__init__.py b/web/pgadmin/tools/restore/__init__.py
index ea9a3e82f..3bb9a9c5d 100644
--- a/web/pgadmin/tools/restore/__init__.py
+++ b/web/pgadmin/tools/restore/__init__.py
@@ -22,7 +22,7 @@ from pgadmin.utils import PgAdminModule, get_storage_directory, html, \
 from pgadmin.utils.ajax import make_json_response, bad_request
 
 from config import PG_DEFAULT_DRIVER
-from pgadmin.model import Server
+from pgadmin.model import Server, SharedServer
 from pgadmin.utils.constants import MIMETYPE_APP_JS
 
 # set template path for sql scripts
@@ -88,9 +88,15 @@ class RestoreMessage(IProcessDesc):
 
     def get_server_details(self):
         # Fetch the server details like hostname, port, roles etc
-        s = Server.query.filter_by(
-            id=self.sid, user_id=current_user.id
-        ).first()
+        if Server.query.filter_by(id=self.sid,
+                                  user_id=current_user.id).first():
+            s = Server.query.filter_by(
+                id=self.sid, user_id=current_user.id
+            ).first()
+        else:
+            s = SharedServer.query.filter_by(
+                id=self.sid, user_id=current_user.id
+            ).first()
 
         from pgadmin.utils.driver import get_driver
         driver = get_driver(PG_DEFAULT_DRIVER)
@@ -209,10 +215,14 @@ def _connect_server(sid):
     :param sid: Server ID.
     :return: if not error occurred then return connection data.
     """
-    # Fetch the server details like hostname, port, roles etc
-    server = Server.query.filter_by(
-        id=sid
-    ).first()
+    if Server.query.filter_by(id=sid, user_id=current_user.id).first():
+        server = Server.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
+    else:
+        server = SharedServer.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
 
     if server is None:
         return make_json_response(
@@ -466,9 +476,15 @@ def check_utility_exists(sid):
     Returns:
         None
     """
-    server = Server.query.filter_by(
-        id=sid, user_id=current_user.id
-    ).first()
+    # Fetch the server details like hostname, port, roles etc
+    if Server.query.filter_by(id=sid, user_id=current_user.id).first():
+        server = Server.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
+    else:
+        server = SharedServer.query.filter_by(
+            id=sid, user_id=current_user.id
+        ).first()
 
     if server is None:
         return make_json_response(


view thread (6+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: [pgAdmin][RM6385]: Backup on a shared server doesn't seem to work
  In-Reply-To: <CAJ9T6SurWoKa6Z14F3wFGJtQbtFh+gCXt9vULSTciiR5AG4x1Q@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox