Fix the issue where Import/Export was failing in linux runtime. Fixes #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.
This commit is contained in:
Murtuza Zabuawala 2017-03-09 09:54:55 +00:00 committed by Dave Page
parent 533833cb02
commit bc63652811
5 changed files with 21 additions and 6 deletions

View File

@ -100,6 +100,8 @@ if __name__ == '__main__':
# the process-executor. # the process-executor.
# #
# Setting PYTHONHOME launch them properly. # Setting PYTHONHOME launch them properly.
from pgadmin.utils import IS_WIN
if IS_WIN:
os.environ['PYTHONHOME'] = sys.prefix os.environ['PYTHONHOME'] = sys.prefix
try: try:

View File

@ -217,7 +217,7 @@ class BatchProcess(object):
executor = file_quote(os.path.join( executor = file_quote(os.path.join(
os.path.dirname(u(__file__)), u'process_executor.py' os.path.dirname(u(__file__)), u'process_executor.py'
)) ))
paths = sys.path[:] paths = os.environ['PATH'].split(os.pathsep)
interpreter = None interpreter = None
if os.name == 'nt': if os.name == 'nt':

View File

@ -226,7 +226,10 @@ def create_backup_job(sid):
else: else:
data = json.loads(request.data, encoding='utf-8') data = json.loads(request.data, encoding='utf-8')
try:
backup_file = filename_with_file_manager_path(data['file']) 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 # Fetch the server details like hostname, port, roles etc
server = Server.query.filter_by( server = Server.query.filter_by(
@ -324,7 +327,10 @@ def create_backup_objects_job(sid):
else: else:
data = json.loads(request.data, encoding='utf-8') data = json.loads(request.data, encoding='utf-8')
try:
backup_file = filename_with_file_manager_path(data['file']) 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 # Fetch the server details like hostname, port, roles etc
server = Server.query.filter_by( server = Server.query.filter_by(

View File

@ -223,7 +223,11 @@ def create_import_export_job(sid):
storage_dir = get_storage_directory() storage_dir = get_storage_directory()
if 'filename' in data: if 'filename' in data:
try:
_file = filename_with_file_manager_path(data['filename'], data['is_import']) _file = filename_with_file_manager_path(data['filename'], data['is_import'])
except Exception as e:
return bad_request(errormsg=str(e))
if not _file: if not _file:
return bad_request(errormsg=_('Please specify a valid file')) return bad_request(errormsg=_('Please specify a valid file'))

View File

@ -179,7 +179,10 @@ def create_restore_job(sid):
else: else:
data = json.loads(request.data, encoding='utf-8') data = json.loads(request.data, encoding='utf-8')
try:
_file = filename_with_file_manager_path(data['file']) _file = filename_with_file_manager_path(data['file'])
except Exception as e:
return bad_request(errormsg=str(e))
if _file is None: if _file is None:
return make_json_response( return make_json_response(