示例#1
0
 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()
示例#2
0
 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