From 9df1318f4fa204c1c831358458a4d1080fedda10 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 30 Aug 2011 15:23:26 +0200 Subject: [PATCH] [IMP] have the export dialog fetch possible export formats from the server bzr revid: xmo@openerp.com-20110830132326-ac0f7xs3h1jr3a7j --- addons/base/controllers/main.py | 16 ++++++++++++++++ addons/base/static/src/js/data_export.js | 9 +++++++++ addons/base/static/src/xml/base.xml | 7 ++----- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 5f391604eb9..ab583d9831c 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -1066,6 +1066,20 @@ class TreeView(View): class Export(View): _cp_path = "/base/export" + @openerpweb.jsonrequest + def formats(self, req): + """ Returns all valid export formats + + :returns: for each export format, a pair of identifier and printable name + :rtype: [(str, str)] + """ + return sorted([ + controller.fmt + for path, controller in openerpweb.controllers_path.iteritems() + if path.startswith(self._cp_path) + if hasattr(controller, 'fmt') + ], key=operator.itemgetter(1)) + def fields_get(self, req, model): Model = req.session.model(model) fields = Model.fields_get(False, req.session.eval_context(req.context)) @@ -1236,6 +1250,7 @@ class Export(View): class CSVExport(Export): _cp_path = '/base/export/csv' + fmt = ('csv', 'CSV') @property def content_type(self): @@ -1270,6 +1285,7 @@ class CSVExport(Export): class ExcelExport(Export): _cp_path = '/base/export/xls' + fmt = ('xls', 'Excel') @property def content_type(self): diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index 1823dbd6ed2..c555a3b7f3b 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -65,6 +65,15 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ self.rpc("/base/export/get_fields", { model: self.dataset.model, params: params}, self.on_show_data); } }); + self.rpc('/base/export/formats', {}, function (formats) { + self.setup_export_formats(formats); + }); + }, + setup_export_formats: function (formats) { + var $fmts = this.$element.find('#export_format'); + _(formats).each(function (format) { + $fmts.append(new Option(format[1], format[0])); + }); }, on_show_exists_export_list: function() { var self = this; diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index d3e91f281f0..75593d603e9 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -1237,11 +1237,8 @@ - - + +