def render(self): out = StringIO() writer = UnicodeWriter(out, delimiter=';', quoting=csv.QUOTE_ALL) #writer = csv.writer(out) CSV_HEADER = self.csv_headers() # Create CSV file CSV_HEADER_I18N = [self.context.translate(_(x)) for x in CSV_HEADER] writer.writerow(CSV_HEADER_I18N) export_data = self.prepare_export_data() for entry in export_data: result = export_data[entry] answers = [] for r in survey_fields_ordered(): value = result[r] answers.append(value.decode('utf-8')) writer.writerow(answers) data = out.getvalue() prefix = 'surveyresults' timemarker = int(round(time.time() * 1000)) ext = '.csv' filename = "%s-%s%s" % (prefix, timemarker, ext) c_control = "must-revalidate, post-check=0, pre-check=0, public" # Create response self.request.response.setHeader('Content-Length', "%d" % len(data)) self.request.response.setHeader('Pragma', "no-cache") self.request.response.setHeader('Cache-Control', c_control) self.request.response.setHeader('Expires', "0") # Return CSV data self.request.response.setHeader('Content-Type', 'text/csv') self.request.response.setHeader('Content-Disposition', 'attachment; filename=%s' % filename) return out.getvalue()
def csv_preview(self): out = StringIO() #writer = UnicodeWriter(out, # {'delimiter': ';', # 'quotechar': '"', # 'quoting': csv.QUOTE_ALL}) writer = UnicodeWriter(out, delimiter=';', quoting=csv.QUOTE_ALL) #writer = csv.writer(out) CSV_HEADER = self.csv_headers() # Create CSV file CSV_HEADER_I18N = [self.context.translate(_(x)) for x in CSV_HEADER] writer.writerow(CSV_HEADER_I18N) export_data = self.prepare_export_data() for entry in export_data: result = export_data[entry] answers = [] for r in survey_fields_ordered(): value = result[r] answers.append(value.decode('utf-8')) writer.writerow(answers) data = out.getvalue() return data