Hi, Please find the attached patch to fix the below 2 bugs.
RM 1603: [Web Based] Export database failed if object contains double quotes. RM 1220: Backup database is not working with special characters The issues which were fixed: 1. Client side data were not unescaped 2. Required command line arguments were quoted twice Thanks, Khushboo
diff --git a/web/pgadmin/tools/backup/__init__.py b/web/pgadmin/tools/backup/__init__.py index 771b3ff..acfc6e1 100644 --- a/web/pgadmin/tools/backup/__init__.py +++ b/web/pgadmin/tools/backup/__init__.py @@ -276,7 +276,7 @@ def create_backup_job(sid): server.username, '--no-password', '--database', - driver.qtIdent(conn, server.maintenance_db) + server.maintenance_db ] if 'role' in data and data['role']: args.append('--role') @@ -428,14 +428,14 @@ def create_backup_objects_job(sid): set_value('no_of_jobs', '--jobs', True) for s in data['schemas']: - args.extend(['--schema', driver.qtIdent(conn, s)]) + args.extend(['--schema', s]) for s, t in data['tables']: args.extend([ '--table', driver.qtIdent(conn, s, t) ]) - args.append(driver.qtIdent(conn, data['database'])) + args.append(data['database']) try: p = BatchProcess( diff --git a/web/pgadmin/tools/backup/templates/backup/js/backup.js b/web/pgadmin/tools/backup/templates/backup/js/backup.js index a13a31c..8ddd4fc 100644 --- a/web/pgadmin/tools/backup/templates/backup/js/backup.js +++ b/web/pgadmin/tools/backup/templates/backup/js/backup.js @@ -747,20 +747,20 @@ TODO LIST FOR BACKUP: var treeInfo = node.getTreeNodeHierarchy.apply(node, [i]); // Set current database into model - this.view.model.set('database', treeInfo.database.label); + this.view.model.set('database', _.unescape(treeInfo.database.label)); // We will remove once object tree is implemented // If selected node is Schema then add it in model if(d._type == 'schema') { var schemas = []; - schemas.push(d.label); + schemas.push(_.unescape(d.label)); this.view.model.set('schemas', schemas); } // If selected node is Table then add it in model along with // its schema if(d._type == 'table') { this.view.model.set( - 'tables', [[treeInfo.schema.label, d.label]] + 'tables', [[_.unescape(treeInfo.schema.label), _.unescape(d.label)]] ); } diff --git a/web/pgadmin/tools/import_export/__init__.py b/web/pgadmin/tools/import_export/__init__.py index e1dc061..bfae98b 100644 --- a/web/pgadmin/tools/import_export/__init__.py +++ b/web/pgadmin/tools/import_export/__init__.py @@ -254,8 +254,7 @@ def create_import_export_job(sid): args = [ '--host', server.host, '--port', str(server.port), - '--username', server.username, '--dbname', - driver.qtIdent(conn, data['database']), + '--username', server.username, '--dbname', data['database'], '--command', query ] 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 f564a0e..0859b16 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 @@ -400,9 +400,9 @@ define( treeInfo = n.getTreeNodeHierarchy.apply(n, [i]) this.view.model.set({ - 'database': treeInfo.database.label, - 'schema': treeInfo.schema.label, - 'table': treeInfo.table.label + 'database': _.unescape(treeInfo.database.label), + 'schema': _.unescape(treeInfo.schema.label), + 'table': _.unescape(treeInfo.table.label) }); var self = this, baseUrl = "{{ url_for('import_export.index') }}" + diff --git a/web/pgadmin/tools/restore/templates/restore/js/restore.js b/web/pgadmin/tools/restore/templates/restore/js/restore.js index 2bc35e8..fe21a38 100644 --- a/web/pgadmin/tools/restore/templates/restore/js/restore.js +++ b/web/pgadmin/tools/restore/templates/restore/js/restore.js @@ -472,26 +472,26 @@ define([ var info = node.getTreeNodeHierarchy.apply(node, [i]), m = this.view.model; // Set current node info into model - m.set('database', info.database.label); + m.set('database', _.unescape(info.database.label)); if (!m.get('custom')) { switch (d._type) { case 'schema': - m.set('schemas', d.label); + m.set('schemas', _.unescape(d.label)); break; case 'table': - m.set('tables', [info.schema.label, d.label]); + m.set('tables', [_.unescape(info.schema.label), _.unescape(d.label)]); break; case 'function': - m.set('functions', [info.schema.label, d.label]); + m.set('functions', [_.unescape(info.schema.label), _.unescape(d.label)]); break; case 'index': - m.set('indexes', [info.schema.label, d.label]); + m.set('indexes', [_.unescape(info.schema.label), _.unescape(d.label)]); break; case 'trigger': - m.set('triggers', [info.schema.label, d.label]); + m.set('triggers', [_.unescape(info.schema.label), _.unescape(d.label)]); break; case 'trigger_func': - m.set('trigger_funcs', [info.schema.label, d.label]); + m.set('trigger_funcs', [_.unescape(info.schema.label), _.unescape(d.label)]); break; } } else {
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers