From 05e7ee5a05d5a196dcf2272ff5a6e66e08c5a188 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Fri, 17 Jun 2016 22:05:49 +0100 Subject: [PATCH] Second attempt at fixing the file handling code. Tested on Mac and Windows in both desktop and server modes. --- .../templates/file_manager/js/file_manager.js | 20 +++++-------------- web/pgadmin/tools/backup/__init__.py | 4 ++-- .../backup/templates/backup/js/backup.js | 12 +++++------ web/pgadmin/tools/import_export/__init__.py | 4 ++-- .../import_export/js/import_export.js | 4 ++-- web/pgadmin/tools/restore/__init__.py | 6 +++--- .../restore/templates/restore/js/restore.js | 6 +++--- web/pgadmin/tools/sqleditor/__init__.py | 12 ++++++----- 8 files changed, 30 insertions(+), 38 deletions(-) diff --git a/web/pgadmin/misc/file_manager/templates/file_manager/js/file_manager.js b/web/pgadmin/misc/file_manager/templates/file_manager/js/file_manager.js index aa23b5699..7d6eb3b7f 100644 --- a/web/pgadmin/misc/file_manager/templates/file_manager/js/file_manager.js +++ b/web/pgadmin/misc/file_manager/templates/file_manager/js/file_manager.js @@ -138,9 +138,7 @@ define([ sel_file = $('.fileinfo tbody tr.selected td p span').attr('title'); } var newFile = $('.currentpath').val() + sel_file; - if (newFile.indexOf('/') == 0) { - newFile = newFile.substr(1); - } + pgAdmin.Browser.Events.trigger('pgadmin-storage:finish_btn:storage_dialog', newFile); } removeTransId(trans_id); @@ -251,9 +249,7 @@ define([ sel_file = $('.fileinfo tbody tr.selected td p span').attr('title'); } var newFile = $('.currentpath').val() + sel_file; - if (newFile.indexOf('/') == 0) { - newFile = newFile.substr(1); - } + pgAdmin.Browser.Events.trigger('pgadmin-storage:finish_btn:select_file', newFile); } removeTransId(trans_id); @@ -364,9 +360,7 @@ define([ sel_file = $('.fileinfo tbody tr.selected td p span').attr('title'); } var newFile = $('.currentpath').val() + sel_file; - if (newFile.indexOf('/') == 0) { - newFile = newFile.substr(1); - } + pgAdmin.Browser.Events.trigger('pgadmin-storage:finish_btn:select_folder', newFile); } removeTransId(trans_id); @@ -475,9 +469,7 @@ define([ $('.replace_file, .fm_dimmer').hide(); var selected_item = $('.allowed_file_types .create_input input[type="text"]').val(), newFile = $('.currentpath').val() + selected_item; - if (newFile.indexOf('/') == 0) { - newFile = newFile.substr(1); - } + pgAdmin.Browser.Events.trigger('pgadmin-storage:finish_btn:create_file', newFile); $('.file_manager_create_cancel').trigger('click'); }); @@ -517,9 +509,7 @@ define([ if (closeEvent.button.text == "{{ _('Create') }}") { var selected_item = $('.allowed_file_types .create_input input[type="text"]').val(); var newFile = $('.currentpath').val() + selected_item; - if (newFile.indexOf('/') == 0) { - newFile = newFile.substr(1); - } + if(!_.isUndefined(selected_item) && selected_item !== '' && this.is_file_exist()) { this.replace_file(); closeEvent.cancel = true; diff --git a/web/pgadmin/tools/backup/__init__.py b/web/pgadmin/tools/backup/__init__.py index 42901d143..239a0414f 100644 --- a/web/pgadmin/tools/backup/__init__.py +++ b/web/pgadmin/tools/backup/__init__.py @@ -131,7 +131,7 @@ class BackupMessage(IProcessDesc): self.database ) ) - if self.backup_type == BACKUP.GLOBALS: + elif self.backup_type == BACKUP.GLOBALS: res += html.safe_str( _("Backing up the global objects on the server '{0}'").format( "{0} ({1}:{2})".format(s.name, s.host, s.port) @@ -213,7 +213,7 @@ def filename_with_file_manager_path(file): storage_dir = get_storage_directory() if storage_dir: - return os.path.join(storage_dir, file) + return os.path.join(storage_dir, file.lstrip('/')) return file diff --git a/web/pgadmin/tools/backup/templates/backup/js/backup.js b/web/pgadmin/tools/backup/templates/backup/js/backup.js index 7938a1d6f..82f0ddc99 100644 --- a/web/pgadmin/tools/backup/templates/backup/js/backup.js +++ b/web/pgadmin/tools/backup/templates/backup/js/backup.js @@ -462,7 +462,7 @@ TODO LIST FOR BACKUP: self.__internal.buttons[2].element.disabled = false; } else { self.__internal.buttons[2].element.disabled = true; - this.errorModel.set('file', '{{ _('Please provide filename') }}') + this.errorModel.set('file', '{{ _('Please provide a filename') }}') } }); }, @@ -499,8 +499,8 @@ TODO LIST FOR BACKUP: data:{ 'data': JSON.stringify(args) }, success: function(res) { if (res.success) { - alertify.message( - '{{ _('Background process for taking backup has been created!') }}', + alertify.notify( + '{{ _('Backup job created.') }}', 'success', 5 ); pgBrowser.Events.trigger('pgadmin-bgprocess:created', self); @@ -512,7 +512,7 @@ TODO LIST FOR BACKUP: try { var err = $.parseJSON(xhr.responseText); alertify.alert( - '{{ _('Backup failed...') }}', + '{{ _('Backup job failed.') }}', err.errormsg ); } catch (e) {} @@ -677,7 +677,7 @@ TODO LIST FOR BACKUP: data:{ 'data': JSON.stringify(args) }, success: function(res) { if (res.success) { - alertify.message('{{ _('Background process for taking backup has been created!') }}', 1); + alertify.notify('{{ _('Backup job created.') }}', 'success', 5); pgBrowser.Events.trigger('pgadmin-bgprocess:created', self); } }, @@ -685,7 +685,7 @@ TODO LIST FOR BACKUP: try { var err = $.parseJSON(xhr.responseText); alertify.alert( - '{{ _('Backup failed...') }}', + '{{ _('Backup job failed.') }}', err.errormsg ); } catch (e) {} diff --git a/web/pgadmin/tools/import_export/__init__.py b/web/pgadmin/tools/import_export/__init__.py index 74a3b0546..25dd5c490 100644 --- a/web/pgadmin/tools/import_export/__init__.py +++ b/web/pgadmin/tools/import_export/__init__.py @@ -204,9 +204,9 @@ def create_import_export_job(sid): if storage_dir: storage_dir = storage_dir.replace('/', '\\') data['filename'] = data['filename'].replace('\\', '\\\\') - data['filename'] = os.path.join(storage_dir, data['filename']) + data['filename'] = os.path.join(storage_dir, data['filename'].lstrip('/')) else: - data['filename'] = os.path.join(storage_dir, data['filename']) + data['filename'] = os.path.join(storage_dir, data['filename'].lstrip('/')) else: return make_json_response( data={'status': False, 'info': 'Please specify a valid file'} diff --git a/web/pgadmin/tools/import_export/templates/import_export/js/import_export.js b/web/pgadmin/tools/import_export/templates/import_export/js/import_export.js index 6dcca1e3c..6d78195a3 100644 --- a/web/pgadmin/tools/import_export/templates/import_export/js/import_export.js +++ b/web/pgadmin/tools/import_export/templates/import_export/js/import_export.js @@ -367,7 +367,7 @@ define( data:{ 'data': JSON.stringify(args) }, success: function(res) { if (res.success) { - Alertify.message('{{ _('Background process for taking import/export has been created!') }}', 1); + Alertify.notify('{{ _('Import/export job created.') }}', 'success', 5); pgBrowser.Events.trigger('pgadmin-bgprocess:created', self); } }, @@ -375,7 +375,7 @@ define( try { var err = $.parseJSON(xhr.responseText); Alertify.alert( - '{{ _('Import failed...') }}', + '{{ _('Import/export job failed.') }}', err.errormsg ); } catch (e) {} diff --git a/web/pgadmin/tools/restore/__init__.py b/web/pgadmin/tools/restore/__init__.py index f448d3665..b1458dc94 100644 --- a/web/pgadmin/tools/restore/__init__.py +++ b/web/pgadmin/tools/restore/__init__.py @@ -117,7 +117,7 @@ class RestoreMessage(IProcessDesc): idx += 1 if no_args > 1: - res += ' "' + html.safe_str(self.bfile) + '"' + res += ' "' + html.safe_str(arg) + '"' res += '' @@ -155,7 +155,7 @@ def filename_with_file_manager_path(file): storage_dir = get_storage_directory() if storage_dir: - return os.path.join(storage_dir, file) + return os.path.join(storage_dir, file.lstrip('/')) return file @@ -189,7 +189,7 @@ def create_restore_job(sid): if server is None: return make_json_response( success=0, - errormsg=_("Could not find the specified server") + errormsg=_("Could not find the specified server.") ) # To fetch MetaData for the server diff --git a/web/pgadmin/tools/restore/templates/restore/js/restore.js b/web/pgadmin/tools/restore/templates/restore/js/restore.js index 7113bfd59..d470a9d9f 100644 --- a/web/pgadmin/tools/restore/templates/restore/js/restore.js +++ b/web/pgadmin/tools/restore/templates/restore/js/restore.js @@ -460,8 +460,8 @@ define([ data:{ 'data': JSON.stringify(args) }, success: function(res) { if (res.success) { - alertify.message( - '{{ _('Restore job created!') }}', 5 + alertify.notify( + '{{ _('Restore job created.') }}', 'success', 5 ); pgBrowser.Events.trigger('pgadmin-bgprocess:created', self); } else { @@ -472,7 +472,7 @@ define([ try { var err = $.parseJSON(xhr.responseText); alertify.alert( - '{{ _('Backup failed...') }}', + '{{ _('Restore failed.') }}', err.errormsg ); } catch (e) {} diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index ddc4e235d..8de51d402 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -1126,7 +1126,7 @@ def load_file(): # generate full path of file file_path = os.path.join( storage_manager_path, - unquote(file_data['file_name']) + unquote(file_data['file_name'].lstrip('/')) ) file_data = None @@ -1182,10 +1182,12 @@ def save_file(): storage_manager_path = get_storage_directory() # generate full path of file - file_path = os.path.join( - storage_manager_path, - unquote(file_data['file_name']) - ) + file_path = unquote(file_data['file_name']) + if storage_manager_path is not None: + file_path = os.path.join( + storage_manager_path, + unquote(file_data['file_name'].lstrip('/')) + ) file_content = file_data['file_content'] # write to file