def attend(): report = Report() if request.method == 'POST': start = request.form['start'] end = request.form['end'] name = request.form['name'] data_list = report.attend(page='all', name=name, start=start, end=end) if data_list: encoding = 'utf-8-sig' filename = start + '_' + end + '.csv' buf = StringIO() writer = ValidatedWriter(buf, fieldnames=data_list[0].keys()) writer.writeheader() for data in data_list: writer.writerow(data) buf.seek(0) buf = BytesIO(buf.read().encode(encoding)) return send_file(buf, attachment_filename=filename, as_attachment=True, mimetype='text/csv') # https://gist.github.com/doobeh/3e685ef25fac7d03ded7#file-vort-html-L11 form = PeriodSubmitForm() page, name, start, end = request_get(request.args) paging, today, data_list, summary = report.attend(page=page, name=name, start=start, end=end) return render_template('report/attendance.html', **locals())