Hi,

PFA patch to fix the issue where Import/Export was failing in linux runtime.
RM#2166

*Issue:*
Changes done by Ashesh in pgAdmin4.py file for setting up PYTHONHOME
variable to sys.prefix was applicable only for windows only.

Additionally I have also added exception handling for file provided by user
for Backup/Restore/Import/Export.


--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
diff --git a/web/pgAdmin4.py b/web/pgAdmin4.py
index c738287..6025514 100644
--- a/web/pgAdmin4.py
+++ b/web/pgAdmin4.py
@@ -100,7 +100,9 @@ if __name__ == '__main__':
         # the process-executor.
         #
         # Setting PYTHONHOME launch them properly.
-        os.environ['PYTHONHOME'] = sys.prefix
+        from pgadmin.utils import IS_WIN
+        if IS_WIN:
+            os.environ['PYTHONHOME'] = sys.prefix
 
     try:
         app.run(
diff --git a/web/pgadmin/misc/bgprocess/processes.py 
b/web/pgadmin/misc/bgprocess/processes.py
index 5fc48c7..457e6d3 100644
--- a/web/pgadmin/misc/bgprocess/processes.py
+++ b/web/pgadmin/misc/bgprocess/processes.py
@@ -217,7 +217,7 @@ class BatchProcess(object):
         executor = file_quote(os.path.join(
             os.path.dirname(u(__file__)), u'process_executor.py'
         ))
-        paths = sys.path[:]
+        paths = os.environ['PATH'].split(os.pathsep)
         interpreter = None
 
         if os.name == 'nt':
diff --git a/web/pgadmin/tools/backup/__init__.py 
b/web/pgadmin/tools/backup/__init__.py
index 099a822..87e011c 100644
--- a/web/pgadmin/tools/backup/__init__.py
+++ b/web/pgadmin/tools/backup/__init__.py
@@ -226,7 +226,10 @@ def create_backup_job(sid):
     else:
         data = json.loads(request.data, encoding='utf-8')
 
-    backup_file = filename_with_file_manager_path(data['file'])
+    try:
+        backup_file = filename_with_file_manager_path(data['file'])
+    except Exception as e:
+        return bad_request(errormsg=str(e))
 
     # Fetch the server details like hostname, port, roles etc
     server = Server.query.filter_by(
@@ -324,7 +327,10 @@ def create_backup_objects_job(sid):
     else:
         data = json.loads(request.data, encoding='utf-8')
 
-    backup_file = filename_with_file_manager_path(data['file'])
+    try:
+        backup_file = filename_with_file_manager_path(data['file'])
+    except Exception as e:
+        return bad_request(errormsg=str(e))
 
     # Fetch the server details like hostname, port, roles etc
     server = Server.query.filter_by(
diff --git a/web/pgadmin/tools/import_export/__init__.py 
b/web/pgadmin/tools/import_export/__init__.py
index 76f71e1..e5bd708 100644
--- a/web/pgadmin/tools/import_export/__init__.py
+++ b/web/pgadmin/tools/import_export/__init__.py
@@ -223,7 +223,11 @@ def create_import_export_job(sid):
     storage_dir = get_storage_directory()
 
     if 'filename' in data:
-        _file = filename_with_file_manager_path(data['filename'], 
data['is_import'])
+        try:
+            _file = filename_with_file_manager_path(data['filename'], 
data['is_import'])
+        except Exception as e:
+            return bad_request(errormsg=str(e))
+
         if not _file:
             return bad_request(errormsg=_('Please specify a valid file'))
 
diff --git a/web/pgadmin/tools/restore/__init__.py 
b/web/pgadmin/tools/restore/__init__.py
index 394902f..393639b 100644
--- a/web/pgadmin/tools/restore/__init__.py
+++ b/web/pgadmin/tools/restore/__init__.py
@@ -179,7 +179,10 @@ def create_restore_job(sid):
     else:
         data = json.loads(request.data, encoding='utf-8')
 
-    _file = filename_with_file_manager_path(data['file'])
+    try:
+        _file = filename_with_file_manager_path(data['file'])
+    except Exception as e:
+        return bad_request(errormsg=str(e))
 
     if _file is None:
         return make_json_response(
-- 
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

Reply via email to