diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-10-16 19:01:11 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-10-16 19:01:11 +0200 |
commit | 860e2d1b90a2e3cb011e7b9160e0dcba59d4dd66 (patch) | |
tree | dc7511ea64e68513512dbbff14505be8f35cf3c1 /ishtar_common/views_item.py | |
parent | 154f9005337bba88e1e40186a2d908dc93a0d1aa (diff) | |
download | Ishtar-860e2d1b90a2e3cb011e7b9160e0dcba59d4dd66.tar.bz2 Ishtar-860e2d1b90a2e3cb011e7b9160e0dcba59d4dd66.zip |
Fix CSV export with bad encoding
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 6f5dba236..dd44fb411 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -11,6 +11,7 @@ import logging import re import subprocess from tempfile import NamedTemporaryFile +import unidecode from django.conf import settings from django.contrib.gis.geos import GEOSException @@ -1993,7 +1994,17 @@ def get_item(model, func_name, default_name, extra_request_keys=None, delta += 1 val += data[1:][idx + delta] row.append(val) - writer.writerow(row) + try: + writer.writerow(row) + except UnicodeEncodeError: + vals = [] + for v in row: + try: + vals.append(v.encode(ENCODING).decode(ENCODING)) + except UnicodeEncodeError: + vals.append(unidecode(v).encode(ENCODING).decode( + ENCODING)) + writer.writerow(vals) return response return HttpResponse('{}', content_type='text/plain') |