import babel.messages.pofile
import werkzeug.utils
+try:
+ import xlwt
+except ImportError:
+ xlwt = None
import web.common
openerpweb = web.common.http
for path, controller in openerpweb.controllers_path.iteritems()
if path.startswith(self._cp_path)
if hasattr(controller, 'fmt')
- ], key=operator.itemgetter(1))
+ ], key=operator.itemgetter("label"))
def fields_get(self, req, model):
Model = req.session.model(model)
class CSVExport(Export):
_cp_path = '/web/export/csv'
- fmt = ('csv', 'CSV')
+ fmt = {'tag': 'csv', 'label': 'CSV'}
@property
def content_type(self):
class ExcelExport(Export):
_cp_path = '/web/export/xls'
- fmt = ('xls', 'Excel')
+ fmt = {
+ 'tag': 'xls',
+ 'label': 'Excel',
+ 'error': None if xlwt else "XLWT required"
+ }
@property
def content_type(self):
return base + '.xls'
def from_data(self, fields, rows):
- import xlwt
-
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet 1')
do_setup_export_formats: function (formats) {
var $fmts = this.$element.find('#export_format');
_(formats).each(function (format) {
- $fmts.append(new Option(format[1], format[0]));
+ var opt = new Option(format.label, format.tag);
+ if (format.error) {
+ opt.disabled = true;
+ opt.replaceChild(
+ document.createTextNode(
+ _.str.sprintf("%s — %s", format.label, format.error)),
+ opt.childNodes[0])
+ }
+ $fmts.append(opt);
});
},
show_exports_list: function() {