From db04eb8bd26ac1887f79475f8c8566dbeb51b5a9 Mon Sep 17 00:00:00 2001 From: Dmitriy Shesterkin Date: Mon, 25 Dec 2017 18:42:10 +0300 Subject: [PATCH] refactor file response --- requirements/base.txt | 1 - src/commons/pdf_tools.py | 10 +++++----- src/commons/xls/xls_to_response.py | 10 +++++----- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 294d2e4..ce2a0c0 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -69,7 +69,6 @@ envvars==0.3.0 psycopg2==2.6 django-redis==4.8.0 redis==2.10.5 -trans==2.1.0 python-decouple==3.0 numpy==1.13.0 django-cleanup==1.0.0 diff --git a/src/commons/pdf_tools.py b/src/commons/pdf_tools.py index 7a5e7e1..3b37fec 100644 --- a/src/commons/pdf_tools.py +++ b/src/commons/pdf_tools.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- +import urllib +import urllib.parse from io import BytesIO -from trans import trans from xhtml2pdf import pisa from django.template.loader import get_template from django.template import Context @@ -14,10 +15,9 @@ def pdf_to_response(content, filename=None): """ response = HttpResponse(content, content_type='application/pdf') if filename: - filename = filename.replace('"', "''") - filename = filename.replace('№', 'N') - filename = trans(filename) - response['Content-Disposition'] = ('attachment; filename="{}"'.format(filename)) + filename = filename.encode('utf-8') + filename_part = "filename*=UTF-8''%s" % urllib.parse.quote(filename) + response['Content-Disposition'] = 'attachment; ' + filename_part return response diff --git a/src/commons/xls/xls_to_response.py b/src/commons/xls/xls_to_response.py index b50523f..40322cb 100644 --- a/src/commons/xls/xls_to_response.py +++ b/src/commons/xls/xls_to_response.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- -from trans import trans +import urllib +import urllib.parse from django.http import HttpResponse @@ -9,8 +10,7 @@ def xls_to_response(content, filename=None): """ response = HttpResponse(content, content_type='application/ms-excel') if filename: - filename = filename.replace('"', "''") - filename = filename.replace('№', 'N') - filename = trans(filename) - response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename) + filename = filename.encode('utf-8') + filename_part = "filename*=UTF-8''%s" % urllib.parse.quote(filename) + response['Content-Disposition'] = 'attachment; ' + filename_part return response