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