From e98a1c35378b97702b92396e12845bee1d4d5568 Mon Sep 17 00:00:00 2001 From: rumbin Date: Tue, 5 Dec 2017 21:04:58 +0100 Subject: [PATCH] asciifying http header for csv download; fixes #3952 (#3975) * asciifying http header for csv download; fixes #3952 * fixed order of imports and added unidecode to requirements in setup.py --- setup.py | 1 + superset/views/core.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1feebf086..b50cf28cc 100644 --- a/setup.py +++ b/setup.py @@ -77,6 +77,7 @@ setup( 'sqlparse==0.2.3', 'thrift>=0.9.3', 'thrift-sasl>=0.2.1', + 'unidecode>=0.04.21', ], extras_require={ 'cors': ['Flask-Cors>=2.0.0'], diff --git a/superset/views/core.py b/superset/views/core.py index fc63391fa..d1219ea82 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -28,6 +28,7 @@ import pandas as pd import sqlalchemy as sqla from sqlalchemy import create_engine from sqlalchemy.engine.url import make_url +from unidecode import unidecode from werkzeug.routing import BaseConverter from werkzeug.utils import secure_filename @@ -2283,7 +2284,7 @@ class Superset(BaseSupersetView): csv = df.to_csv(index=False, **config.get('CSV_EXPORT')) response = Response(csv, mimetype='text/csv') response.headers['Content-Disposition'] = ( - 'attachment; filename={}.csv'.format(query.name)) + 'attachment; filename={}.csv'.format(unidecode(query.name))) logging.info('Ready to return response') return response