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

Reply via email to