From e4bfeb49b4531c49d52a469c2ae1f28583153dc0 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 26 Aug 2011 16:14:39 +0200 Subject: [PATCH 01/47] [FIX] some warnings and overly complex code bzr revid: xmo@openerp.com-20110826141439-k8eawjbx46953z16 --- addons/base/static/src/js/data_export.js | 49 ++++++++++-------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index ad440302c69..b2372f275fa 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -59,7 +59,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ if (import_comp) { var params = { import_compat: parseInt(import_comp) - } + }; self.rpc("/base/export/get_fields", { model: self.dataset.model, params: params}, self.on_show_data); } }); @@ -166,7 +166,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ var params = { import_compat: parseInt(import_comp), parent_field_type : record['field_type'] - } + }; self.rpc("/base/export/get_fields", { model: model, prefix: prefix, @@ -201,7 +201,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ var o2m_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); o2m_fld.addClass("oe_export_readonlyfield"); } - if ((record.required == true) || record.required == "True") { + if (record.required) { var required_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); required_fld.addClass("oe_export_requiredfield"); } @@ -210,7 +210,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ }); self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e) { - if (e.shiftKey == true) { + if (e.shiftKey) { var frst_click, scnd_click = ''; if (self.row_index == 0) { self.row_index = this.rowIndex; @@ -218,14 +218,14 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ $(frst_click).addClass("ui-selected"); } else { if (this.rowIndex >=self.row_index) { - for (i = (self.row_index-1); i < this.rowIndex; i++) { + for (var i = (self.row_index-1); i < this.rowIndex; i++) { scnd_click = self.$element.find("tr[id^='treerow-']")[i]; if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { $(scnd_click).addClass("ui-selected"); } } } else { - for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { + for (var i = (self.row_index-1); i >= (this.rowIndex-1); i--) { scnd_click = self.$element.find("tr[id^='treerow-']")[i]; if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { $(scnd_click).addClass("ui-selected"); @@ -236,37 +236,30 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ } self.row_index = this.rowIndex; - self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function(e) { + self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function() { self.row_index = 0; }); var o2m_selection = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); if ($(o2m_selection).hasClass("oe_export_readonlyfield")) { return false; } - var selected = self.$element.find("tr.ui-selected"); - if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)) { - $(this).find('a').blur(); - $(this).removeClass("ui-selected"); - } else if ($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == true)) { - $(this).find('a').focus(); - $(this).addClass("ui-selected"); + if (e.ctrlKey) { + if ($(this).hasClass('ui-selected')) { + $(this).removeClass('ui-selected').find('a').blur(); + } else { + $(this).addClass('ui-selected').find('a').focus(); + } + } else if (!e.shiftKey) { + self.$element.find("tr.ui-selected") + .removeClass("ui-selected").find('a').blur(); + $(this).addClass("ui-selected").find('a').focus(); } return false; }); self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function(e) { var keyCode = e.keyCode || e.which; - arrow = {left: 37, up: 38, right: 39, down: 40 }; + var arrow = {left: 37, up: 38, right: 39, down: 40 }; switch (keyCode) { case arrow.left: if ($(this).find('img').attr('src') === '/base/static/src/img/collapse.gif') { @@ -276,7 +269,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ case arrow.up: var elem = this; $(elem).removeClass("ui-selected"); - while ($(elem).prev().is(":visible") == false) { + while (!$(elem).prev().is(":visible")) { elem = $(elem).prev(); } if (!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")) { @@ -292,7 +285,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ case arrow.down: var elem = this; $(elem).removeClass("ui-selected"); - while($(elem).next().is(":visible") == false) { + while(!$(elem).next().is(":visible")) { elem = $(elem).next(); } if (!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")) { @@ -302,7 +295,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ break; } }); - self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function(e) { + self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function() { var $o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); if (!$o2m_selection.hasClass("oe_export_readonlyfield")) { var field_id = $(this).find("a").attr("id"); From 8e68d81d30580de68486bcc0b19a431f38007a0d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 26 Aug 2011 16:39:14 +0200 Subject: [PATCH 02/47] [IMP] simplify markup of main export view bzr revid: xmo@openerp.com-20110826143914-1h9pfue36yg9e1ec --- addons/base/static/src/css/data_export.css | 23 +++--- addons/base/static/src/js/data_export.js | 8 +- addons/base/static/src/xml/base.xml | 96 ++++++++-------------- 3 files changed, 50 insertions(+), 77 deletions(-) diff --git a/addons/base/static/src/css/data_export.css b/addons/base/static/src/css/data_export.css index 7b4b9707b39..9a53d07d365 100644 --- a/addons/base/static/src/css/data_export.css +++ b/addons/base/static/src/css/data_export.css @@ -1,3 +1,6 @@ +.openerp .oe-export { + width: 100%; +} .openerp .oe_export_row tr{ background-color: #FFFFFF; font-size: 0.8em; @@ -20,11 +23,6 @@ background-color: #F3F3F3; } -.openerp .oe_export_fields_selector_export { - width: 100%; - height: 400px; -} - .openerp .oe_export_fields_selector_left { width: 50%; } @@ -35,9 +33,15 @@ height: 400px; border: solid #999999 1px; } +.openerp div#left_field_panel table { + width: 100%; +} .openerp .oe_export_fields_selector_center { - width: 102px; + text-align: center; +} +.openerp .oe_export_fields_selector_center button { + white-space: nowrap; } .openerp .oe_export_fields_selector_right { @@ -45,7 +49,7 @@ height: 400px; } -.openerp .oe_export_fields_selector_export select{ +.openerp .oe_export_fields_selector_right select{ width: 100%; height: 100%; } @@ -78,8 +82,3 @@ border: none; display: block; } - -.openerp .oe_export_button_export { - border: 1px solid #006; - background-color: #F3F3F3; -} diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index b2372f275fa..74a67d59ab2 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -1,15 +1,15 @@ openerp.base.data_export = function(openerp) { openerp.base.DataExport = openerp.base.Dialog.extend({ + template: 'ExportTreeView', + dialog_title: 'Export Data', init: function(parent, dataset) { this._super(parent); this.dataset = dataset; }, start: function() { var self = this; - self._super(false); - self.template = 'ExportTreeView'; - self.dialog_title = "Export Data"; - self.open({ + this._super.apply(this, arguments); + this.open({ modal: true, width: '55%', height: 'auto', diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 0c17e70cfc7..28591276ed1 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -1223,78 +1223,52 @@ Export - +
- - - + + + + + +
+ This wizard will export all data that matches the current search criteria to a CSV file. You can export all data or only the fields that can be reimported after modification.
- - - - - - + -
- - - - + + -
+ +
- - - - - - - - - - - -
Available fieldsFields to export - Save fields list -
-
-
-
-
-
- - - - - - - - - - -
- -
- -
- -
-
- -
+
Available fields + + Fields to export + Save fields list +
+
+
+
+
+
+ + + + +
From 5ef387c85c1af34699153f0a90a12621999b9a34 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 26 Aug 2011 17:04:42 +0200 Subject: [PATCH 03/47] [IMP] more template markup cleanup, some trivial cleanup of the python code bzr revid: xmo@openerp.com-20110826150442-j00m8sy9jib0y6ce --- addons/base/controllers/main.py | 12 +- addons/base/static/src/xml/base.xml | 163 ++++++++++++++-------------- 2 files changed, 86 insertions(+), 89 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 562571f10de..c46b14d80d4 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -1142,8 +1142,7 @@ class Export(View): for index, field in enumerate(fields_order): value = fields[field] - record = {} - if import_compat and value.get('readonly', False): + if import_compat and value.get('readonly'): ok = False for sl in value.get('states', {}).values(): for s in sl: @@ -1152,15 +1151,16 @@ class Export(View): id = prefix + (prefix and '/'or '') + field nm = name + (name and '/' or '') + value['string'] - record.update(id=id, string= nm, action='javascript: void(0)', - target=None, icon=None, children=[], field_type=value.get('type',False), required=value.get('required', False)) + record = {'id': id, 'string': nm, 'children': [], + 'field_type': value.get('type', False), + 'required': value.get('required', False)} records.append(record) - if len(nm.split('/')) < 3 and value.get('relation', False): + if len(nm.split('/')) < 3 and value.get('relation'): if import_compat: ref = value.pop('relation') cfields = self.fields_get(req, ref) - if (value['type'] == 'many2many'): + if value['type'] == 'many2many': record['children'] = [] record['params'] = {'model': ref, 'prefix': id, 'name': nm} diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 28591276ed1..9908606bf53 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -1222,93 +1222,90 @@ Export - - - - - - - + + + + + + + + +
- This wizard will export all data that matches the current search criteria to a CSV file. - You can export all data or only the fields that can be reimported after modification. -
- - + + + + + + - + + + + - - - - - - - - - -
+ This wizard will export all data that matches the current search criteria to a CSV file. + You can export all data or only the fields that can be reimported after modification. +
+ + - - -
Available fields - - Fields to export - Save fields list -
-
-
-
-
-
- - - - - -
- +
Available fields + + Fields to export + Save fields list +
+
+
+
+
+
+ + + + + +
- - - - -
Name
-
- - - - - - - - - - +
&nbsp;
+ + +
Name
+ + + + + + + + + + - - -
&nbsp; + + + - - - - - - - - - - -
- - -
-
+
+ + + + + + + + + + From 1cc90eebd95b8be9e458a5d892bfe82fab20ea1d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 26 Aug 2011 17:24:30 +0200 Subject: [PATCH 04/47] [IMP] move a bunch of trivial python RPC methods to usage of normal dataset methods in JS bzr revid: xmo@openerp.com-20110826152430-8li5tzzlzfr99nda --- addons/base/controllers/main.py | 17 ----- addons/base/static/src/js/data_export.js | 90 ++++++++++++++---------- 2 files changed, 52 insertions(+), 55 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index c46b14d80d4..dddccb90619 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -1194,23 +1194,6 @@ class Export(View): records.reverse() return records - @openerpweb.jsonrequest - def save_export_lists(self, req, name, model, field_list): - result = {'resource':model, 'name':name, 'export_fields': []} - for field in field_list: - result['export_fields'].append((0, 0, {'name': field})) - return req.session.model("ir.exports").create(result, req.session.eval_context(req.context)) - - @openerpweb.jsonrequest - def exist_export_lists(self, req, model): - export_model = req.session.model("ir.exports") - return export_model.read(export_model.search([('resource', '=', model)]), ['name']) - - @openerpweb.jsonrequest - def delete_export(self, req, export_id): - req.session.model("ir.exports").unlink(export_id, req.session.eval_context(req.context)) - return True - @openerpweb.jsonrequest def namelist(self,req, model, export_id): diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index 74a67d59ab2..25c84516682 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -5,6 +5,8 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ init: function(parent, dataset) { this._super(parent); this.dataset = dataset; + this.exports = new openerp.base.DataSetSearch( + this, 'ir.exports', this.dataset.get_context()); }, start: function() { var self = this; @@ -68,30 +70,33 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ var self = this; if (self.$element.find('#saved_export_list').is(':hidden')) { self.$element.find('#ExistsExportList').show(); - } else { - this.rpc('/base/export/exist_export_lists', { 'model': this.dataset.model}, function(export_list) { - if (export_list.length) { - self.$element.find('#ExistsExportList').append(QWeb.render('Exists.ExportList', {'existing_exports': export_list})); - self.$element.find('#saved_export_list').change(function() { - self.$element.find('#fields_list option').remove(); - var export_id = self.$element.find('#saved_export_list option:selected').val(); - if (export_id) { - self.rpc('/base/export/namelist', {'model': self.dataset.model, export_id: parseInt(export_id)}, self.do_load_export_field); - } - }); - self.$element.find('#delete_export_list').click(function() { - var select_exp = self.$element.find('#saved_export_list option:selected'); - if (select_exp.val()) { - self.rpc('/base/export/delete_export', { export_id: parseInt(select_exp.val())}, {}); - select_exp.remove(); - if (self.$element.find('#saved_export_list option').length <= 1) { - self.$element.find('#ExistsExportList').hide(); - } - } - }); + return; + } + this.exports.read_slice(['name'], { + domain: [['resource', '=', this.dataset.model]] + }, function (export_list) { + if (!export_list.length) { + return; + } + self.$element.find('#ExistsExportList').append(QWeb.render('Exists.ExportList', {'existing_exports': export_list})); + self.$element.find('#saved_export_list').change(function() { + self.$element.find('#fields_list option').remove(); + var export_id = self.$element.find('#saved_export_list option:selected').val(); + if (export_id) { + self.rpc('/base/export/namelist', {'model': self.dataset.model, export_id: parseInt(export_id)}, self.do_load_export_field); } }); - } + self.$element.find('#delete_export_list').click(function() { + var select_exp = self.$element.find('#saved_export_list option:selected'); + if (select_exp.val()) { + self.exports.unlink([parseInt(select_exp.val(), 10)]); + select_exp.remove(); + if (self.$element.find('#saved_export_list option').length <= 1) { + self.$element.find('#ExistsExportList').hide(); + } + } + }); + }); }, do_load_export_field: function(field_list) { var export_node = this.$element.find("#fields_list"); @@ -123,23 +128,32 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ }, do_save_export_list: function(value) { var self = this; - var export_field = self.get_fields(); - if (export_field.length) { - self.rpc("/base/export/save_export_lists", {"model": self.dataset.model, "name":value, "field_list":export_field}, function(exp_id) { - if (exp_id) { - if (self.$element.find("#saved_export_list").length > 0) { - self.$element.find("#saved_export_list").append(new Option(value, exp_id)); - } else { - self.on_show_exists_export_list(); - } - if (self.$element.find("#saved_export_list").is(":hidden")) { - self.on_show_exists_export_list(); - } - } - }); - self.on_show_save_list(); - self.$element.find("#fields_list option").remove(); + var fields = self.get_fields(); + if (!fields.length) { + return; } + this.exports.create({ + name: value, + resource: this.dataset.model, + export_fields: _(fields).map(function (field) { + return [0, 0, {name: field}]; + }) + }, function (export_list_id) { + if (!export_list_id) { + return; + } + if (self.$element.find("#saved_export_list").length > 0) { + self.$element.find("#saved_export_list").append( + new Option(value, export_list_id)); + } else { + self.on_show_exists_export_list(); + } + if (self.$element.find("#saved_export_list").is(":hidden")) { + self.on_show_exists_export_list(); + } + }); + this.on_show_save_list(); + this.$element.find("#fields_list option").remove(); }, on_click: function(id, result) { var self = this; From 81d2b20791b992e43d4f861b89087cf46ca63c7b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 29 Aug 2011 12:38:09 +0200 Subject: [PATCH 05/47] [REM] useless conditional (always true) and unused associated variable bzr revid: xmo@openerp.com-20110829103809-434etbz8mx3zvufp --- addons/base/controllers/main.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index dddccb90619..e3e94f396a1 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -1209,18 +1209,17 @@ class Export(View): return name_list def get_data(self, req, model, context=None): - ids = [] context = context or {} fields_data = {} proxy = req.session.model(model) fields = self.fields_get(req, model) - if not ids: - f1 = proxy.fields_view_get(False, 'tree', context)['fields'] - f2 = proxy.fields_view_get(False, 'form', context)['fields'] - fields = dict(f1) - fields.update(f2) - fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) + f1 = proxy.fields_view_get(False, 'tree', context)['fields'] + f2 = proxy.fields_view_get(False, 'form', context)['fields'] + + fields = dict(f1) + fields.update(f2) + fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) def rec(fields): _fields = {'id': 'ID' , '.id': 'Database ID' } From 272cc8b0c77f83516d9008167ea1279ea77d1790 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 29 Aug 2011 12:47:55 +0200 Subject: [PATCH 06/47] [REM] error handling around xlwt import bzr revid: xmo@openerp.com-20110829104755-mkw8fdgwtppx3a21 --- addons/base/controllers/main.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index e3e94f396a1..9a024c22fd5 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -1088,10 +1088,7 @@ def export_csv(fields, result): return data def export_xls(fieldnames, table): - try: - import xlwt - except ImportError: - common.error(_('Import Error.'), _('Please install xlwt library to export to MS Excel.')) + import xlwt workbook = xlwt.Workbook() worksheet = workbook.add_sheet('Sheet 1') From bf4e7856b62dbaea50343e3a4c99085c2e188429 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 29 Aug 2011 12:48:12 +0200 Subject: [PATCH 07/47] [IMP] fix mime type in case of excel export bzr revid: xmo@openerp.com-20110829104812-z2i5wa10rlanwm9p --- addons/base/static/src/js/data_export.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index 25c84516682..2d5a128b37b 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -396,7 +396,10 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ import_compat: parseInt(import_comp), export_format: export_format }, function(data) { - window.location = "data:text/csv/excel;charset=utf8," + data; + var mime = export_format === 'csv' + ? 'text/csv;charset=utf8' + : 'application/vnd.mx-excel'; + window.location = 'data:' + mime + ',' + data; self.close(); }); }, From bf83005072aa87c0755989c3b67c756268f82b9e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 29 Aug 2011 14:27:18 +0200 Subject: [PATCH 08/47] [FIX] encoding and mime type for excel export files bzr revid: xmo@openerp.com-20110829122718-y51ynodvlnkaixms --- addons/base/controllers/main.py | 2 +- addons/base/static/src/js/data_export.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 9a024c22fd5..cef15d76231 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -1112,7 +1112,7 @@ def export_xls(fieldnames, table): data = fp.read() fp.close() #return data.decode('ISO-8859-1') - return unicode(data, 'utf-8', 'replace') + return base64.b64encode(data) class Export(View): _cp_path = "/base/export" diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index 2d5a128b37b..6180ef80183 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -398,7 +398,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ }, function(data) { var mime = export_format === 'csv' ? 'text/csv;charset=utf8' - : 'application/vnd.mx-excel'; + : 'application/vnd.mx-excel;base64'; window.location = 'data:' + mime + ',' + data; self.close(); }); From 9c0486b7381f4abb2ab2cf774fa57637b2096e21 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 30 Aug 2011 10:53:51 +0200 Subject: [PATCH 09/47] [IMP] move file download API to session, so it can more easily be used for operations other than db backup bzr revid: xmo@openerp.com-20110830085351-puvbzwwru9rbfo14 --- addons/base/static/src/js/chrome.js | 66 +++++++---------------------- addons/base/static/src/js/core.js | 44 +++++++++++++++++++ addons/base/static/src/xml/base.xml | 1 - 3 files changed, 59 insertions(+), 52 deletions(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index a4a3b73cc77..972cd7e2b6e 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -339,62 +339,26 @@ openerp.base.Database = openerp.base.Widget.extend({ } }); }, - wait_for_file: function (token, cleanup) { - var self = this, - cookie_name = 'fileToken', - cookie_length = cookie_name.length; - this.backup_timer = setInterval(function () { - var cookies = document.cookie.split(';'); - for(var i=0; i'}); - // need to detect when the file is done downloading (not used - // yet, but we'll need it to fix the UI e.g. with a throbber - // while dump is being generated), iframe load event only fires - // when the iframe content loads, so we need to go smarter: - // http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx - var $target = $('#backup-target'), - token = new Date().getTime(); - if (!$target.length) { - $target = $('