[FIX] don't fuck up name ordering in exported file: match what was requested by the...
authorXavier Morel <xmo@openerp.com>
Wed, 31 Aug 2011 11:04:39 +0000 (13:04 +0200)
committerXavier Morel <xmo@openerp.com>
Wed, 31 Aug 2011 11:04:39 +0000 (13:04 +0200)
bzr revid: xmo@openerp.com-20110831110439-5q04tn4uqqu0ytf2

addons/base/controllers/main.py
addons/base/static/src/js/data_export.js

index b06474a..4e5a3b2 100644 (file)
@@ -1228,18 +1228,21 @@ class Export(View):
         Model = req.session.model(model)
         ids = ids or Model.search(domain, context=context)
 
-        field = fields.keys()
-        result = Model.export_data(ids, field, context).get('datas',[])
+        field_names = map(operator.itemgetter('name'), fields)
+        import_data = Model.export_data(ids, field_names, context).get('datas',[])
+
+        if import_compat:
+            columns_headers = field_names
+        else:
+            columns_headers = [val['label'].strip() for val in fields]
 
-        if not import_compat:
-            field = [val.strip() for val in fields.values()]
 
         req.httpresponse.headers['Content-Disposition'] = \
             'attachment; filename="%s"' % self.filename(model)
         req.httpresponse.cookie['fileToken'] = int(token)
         req.httpresponse.cookie['fileToken']['path'] = '/'
         req.httpresponse.headers['Content-Type'] = self.content_type
-        return self.from_data(field, result)
+        return self.from_data(columns_headers, import_data)
 
 class CSVExport(Export):
     _cp_path = '/base/export/csv'
index bb3c2f1..6d8eb33 100644 (file)
@@ -381,9 +381,9 @@ openerp.base.DataExport = openerp.base.Dialog.extend({
     },
     on_click_export_data: function() {
         $.blockUI(this.$element);
-        var exported_fields = {};
+        var exported_fields = [];
         this.$element.find("#fields_list option").each(function() {
-            exported_fields[$(this).val()] = $(this).text();
+            exported_fields.push({name: $(this).val(), label: $(this).text()});
         });
         if (_.isEmpty(exported_fields)) {
             alert('Please select fields to export...');