backoffice: remove support for .xls export (#8230)

This commit is contained in:
Frédéric Péters 2015-09-10 17:24:29 +02:00
parent c9753cbf34
commit 5890fcd9c6
2 changed files with 1 additions and 70 deletions

2
debian/control vendored
View File

@ -10,7 +10,7 @@ X-Python-Version: 2.7
Package: wcs
Architecture: all
Depends: ${python:Depends}, python-quixote, python-scgi, graphviz, python-feedparser
Recommends: python-dns, python-m2crypto, python-xlwt, python-qrcode, libjs-leaflet
Recommends: python-dns, python-m2crypto, python-qrcode, libjs-leaflet
Suggests: libapache2-mod-scgi | libapache-mod-scgi, python-libxml2, python-lasso, python-psycopg2
Description: web application to design and set up online forms
w.c.s. is a web application which allows to design and set up online forms.

View File

@ -20,11 +20,6 @@ import datetime
import json
import time
try:
import xlwt
except ImportError:
xlwt = None
from quixote import get_session, get_publisher, get_request, get_response, redirect
from quixote.directory import Directory
from quixote.html import TemplateIO, htmltext
@ -375,9 +370,6 @@ class FormPage(Directory):
qs, _('Export a Spreadsheet'))
r += htmltext(' <li><a data-base-href="csv" href="csv%s">%s</a></li>') % (
qs, _('Export as CSV File'))
if xlwt:
r += htmltext('<li><a data-base-href="xls" href="xls%s">%s</a></li>') % (
qs, _('Excel Export'))
r += htmltext(' <li><a href="stats">%s</a></li>') % _('Statistics')
r += htmltext('</ul>')
return r.getvalue()
@ -824,67 +816,6 @@ class FormPage(Directory):
'attachment; filename=%s' % job.file_name)
return job.file_content
def xls(self):
if xlwt is None:
raise errors.TraversalError()
fields = self.get_fields_from_query()
selected_filter = self.get_filter_from_query()
user = get_request().user
query = get_request().form.get('q')
class Exporter(object):
def __init__(self, formpage, formdef, fields, selected_filter):
self.formpage = formpage
self.formdef = formdef
self.fields = fields
self.selected_filter = selected_filter
def export(self, job=None):
w = xlwt.Workbook(encoding=get_publisher().site_charset)
ws = w.add_sheet('1')
for i, f in enumerate(self.formpage.csv_tuple_heading(self.fields)):
ws.write(0, i, f)
items, total_count = FormDefUI(self.formdef).get_listing_items(
self.selected_filter, user=user, query=query)
for i, filled in enumerate(items):
for j, elem in enumerate(self.formpage.csv_tuple(fields, filled)):
if elem and len(elem) > 32767:
# xls cells have a limit of 32767 characters, cut
# it down.
elem = elem[:32760] + ' [...]'
ws.write(i+1, j, elem)
self.output = cStringIO.StringIO()
w.save(self.output)
if job:
job.file_content = self.output.getvalue()
job.content_type = 'application/vnd.ms-excel'
job.store()
get_logger().info('backoffice - form %s - as excel' % self.formdef.name)
count = self.formdef.data_class().count()
exporter = Exporter(self, self.formdef, fields, selected_filter)
if count > 100: # Arbitrary threshold
job = get_response().add_after_job(
str(N_('Exporting forms in Excel format')),
exporter.export)
job.file_name = '%s.xls' % self.formdef.url_name
job.store()
return redirect('export?job=%s' % job.id)
else:
exporter.export()
response = get_response()
response.set_content_type('application/vnd.ms-excel')
response.set_header('content-disposition', 'attachment; filename=%s.xls' % self.formdef.url_name)
return exporter.output.getvalue()
def ods(self):
fields = self.get_fields_from_query()
selected_filter = self.get_filter_from_query()