(query, export_format, table=None)
| 1108 | return _query_view('table_query.html', table) |
| 1109 | |
| 1110 | def export(query, export_format, table=None): |
| 1111 | dataset = get_dataset() |
| 1112 | buf = StringIO() |
| 1113 | if export_format == 'json': |
| 1114 | kwargs = {'indent': 2} |
| 1115 | filename = 'export.json' |
| 1116 | mimetype = 'application/json' |
| 1117 | else: |
| 1118 | kwargs = {} |
| 1119 | filename = 'export.csv' |
| 1120 | mimetype = 'text/csv' |
| 1121 | |
| 1122 | if table: |
| 1123 | filename = '%s-%s' % (table, filename) |
| 1124 | |
| 1125 | # Avoid any special chars in export filename. |
| 1126 | filename = re.sub(r'[^\w\d\-\.]+', '', filename) |
| 1127 | |
| 1128 | if peewee_version >= (4, 0, 2): |
| 1129 | kwargs['base64_bytes'] = app.config['BLOB_AS_BASE64'] |
| 1130 | |
| 1131 | dataset.freeze(query, export_format, file_obj=buf, **kwargs) |
| 1132 | |
| 1133 | response_data = buf.getvalue() |
| 1134 | response = make_response(response_data) |
| 1135 | response.headers['Content-Length'] = len(response_data) |
| 1136 | response.headers['Content-Type'] = mimetype |
| 1137 | response.headers['Content-Disposition'] = 'attachment; filename="%s"' % ( |
| 1138 | filename) |
| 1139 | response.headers['Expires'] = 0 |
| 1140 | response.headers['Pragma'] = 'public' |
| 1141 | return response |
| 1142 | |
| 1143 | @app.route('/<table>/export/', methods=['GET', 'POST']) |
| 1144 | @require_table |
no test coverage detected