From 78358c6cdaadad7be9998a806ac7b98e86603c1e Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 5 Sep 2016 23:49:50 +0200 Subject: [PATCH] Directly serve invoice PDFs via Django --- src/pretix/control/views/orders.py | 6 ++++-- src/pretix/presale/views/order.py | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 9a11ff77e3..13a9ddf514 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -4,7 +4,7 @@ from itertools import groupby from django.contrib import messages from django.core.urlresolvers import reverse from django.db.models import Q -from django.http import Http404, HttpResponseNotAllowed +from django.http import FileResponse, Http404, HttpResponseNotAllowed from django.shortcuts import redirect, render from django.utils.functional import cached_property from django.utils.timezone import now @@ -381,7 +381,9 @@ class InvoiceDownload(EventPermissionRequiredMixin, View): 'now. Please try again in a few seconds.')) return redirect(self.get_order_url()) - return redirect(self.invoice.file.url) + resp = FileResponse(self.invoice.file.file, content_type='application/pdf') + resp['Content-Disposition'] = 'attachment; filename="{}.pdf"'.format(self.invoice.number) + return resp class OrderDownload(OrderView): diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py index 61335322e4..de97d5778e 100644 --- a/src/pretix/presale/views/order.py +++ b/src/pretix/presale/views/order.py @@ -4,7 +4,7 @@ from django.contrib import messages from django.core.urlresolvers import reverse from django.db import transaction from django.db.models import Sum -from django.http import Http404 +from django.http import FileResponse, Http404 from django.shortcuts import redirect from django.utils.functional import cached_property from django.utils.timezone import now @@ -507,4 +507,6 @@ class InvoiceDownload(EventViewMixin, OrderDetailMixin, View): 'now. Please try again in a few seconds.')) return redirect(self.get_order_url()) - return redirect(invoice.file.url) + resp = FileResponse(invoice.file.file, content_type='application/pdf') + resp['Content-Disposition'] = 'attachment; filename="{}.pdf"'.format(invoice.number) + return resp