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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers