From b77d50e34559aa2f6e34953387f0c105e96def57 Mon Sep 17 00:00:00 2001 From: Jan Szejko Date: Mon, 16 Jan 2017 10:28:17 +0100 Subject: [PATCH] just use unidecode for filenames --- requirements.txt | 2 ++ stage2/views.py | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 5382026..2a776b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,3 +38,5 @@ sorl-thumbnail>=12,<13 pyyaml django-subdomains>=2.0.4,<2.1 + +unidecode \ No newline at end of file diff --git a/stage2/views.py b/stage2/views.py index ca9f935..e199de0 100644 --- a/stage2/views.py +++ b/stage2/views.py @@ -6,6 +6,7 @@ from django.http.response import HttpResponseRedirect, HttpResponse, HttpRespons from django.shortcuts import get_object_or_404, render from django.utils import timezone from django.views.decorators.http import require_POST +from unidecode import unidecode from stage2.forms import AttachmentForm, MarkForm from stage2.models import Participant, Assignment, Answer, Attachment, Mark @@ -54,9 +55,8 @@ def upload(request, assignment_id, participant_id, key): def attachment_download(attachment): response = HttpResponse(content_type='application/force-download') response.write(attachment.file.read()) - base, ext = attachment.filename().rsplit('.', 1) - response['Content-Disposition'] = 'attachment; filename="%s.%s"' % ( - base.strip()[:20].replace('\n', '').strip(), ext) + # workaround to this: https://code.djangoproject.com/ticket/20889 + response['Content-Disposition'] = 'attachment; filename="%s"' % unidecode(attachment.filename().replace('\n', ' ')) response['Content-Length'] = response.tell() return response -- 2.20.1