From 19b0e3098e79d5116e79d14161fbb3a930036221 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Thu, 23 Nov 2023 12:39:06 +0100 Subject: [PATCH] Set content-disposition on invoice pdf viewers When viewing a PDF either in the user or admin interface, set the filename using content-disposition so if the user decides to save the file it will get a reasonable filename, and not just `document.pdf` or similar depending on the browser. --- postgresqleu/invoices/views.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/postgresqleu/invoices/views.py b/postgresqleu/invoices/views.py index 36081db27..66d1c7719 100644 --- a/postgresqleu/invoices/views.py +++ b/postgresqleu/invoices/views.py @@ -411,6 +411,7 @@ def viewinvoicepdf(request, invoiceid): authenticate_backend_group(request, 'Invoice managers') r = HttpResponse(content_type='application/pdf') + r['Content-disposition'] = 'filename={}_invoice_{}.pdf'.format(settings.INVOICE_FILENAME_PREFIX, invoice.id) r.write(base64.b64decode(invoice.pdf_invoice)) return r @@ -418,6 +419,7 @@ def viewinvoicepdf(request, invoiceid): def viewinvoicepdf_secret(request, invoiceid, invoicesecret): invoice = get_object_or_404(Invoice, pk=invoiceid, recipient_secret=invoicesecret) r = HttpResponse(content_type='application/pdf') + r['Content-disposition'] = 'filename={}_invoice_{}.pdf'.format(settings.INVOICE_FILENAME_PREFIX, invoice.id) r.write(base64.b64decode(invoice.pdf_invoice)) return r @@ -430,6 +432,7 @@ def viewreceipt(request, invoiceid): authenticate_backend_group(request, 'Invoice managers') r = HttpResponse(content_type='application/pdf') + r['Content-disposition'] = 'filename={}_receipt_{}.pdf'.format(settings.INVOICE_FILENAME_PREFIX, invoice.id) r.write(base64.b64decode(invoice.pdf_receipt)) return r @@ -437,6 +440,7 @@ def viewreceipt(request, invoiceid): def viewreceipt_secret(request, invoiceid, invoicesecret): invoice = get_object_or_404(Invoice, pk=invoiceid, recipient_secret=invoicesecret) r = HttpResponse(content_type='application/pdf') + r['Content-disposition'] = 'filename={}_receipt_{}.pdf'.format(settings.INVOICE_FILENAME_PREFIX, invoice.id) r.write(base64.b64decode(invoice.pdf_receipt)) return r @@ -451,6 +455,7 @@ def viewrefundnote(request, invoiceid, refundid): refund = get_object_or_404(InvoiceRefund, invoice=invoiceid, pk=refundid) r = HttpResponse(content_type='application/pdf') + r['Content-disposition'] = 'filename={}_refund_{}.pdf'.format(settings.INVOICE_FILENAME_PREFIX, invoice.id) r.write(base64.b64decode(refund.refund_pdf)) return r @@ -459,6 +464,7 @@ def viewrefundnote_secret(request, invoiceid, invoicesecret, refundid): invoice = get_object_or_404(Invoice, pk=invoiceid, recipient_secret=invoicesecret) refund = get_object_or_404(InvoiceRefund, invoice=invoice, pk=refundid) r = HttpResponse(content_type='application/pdf') + r['Content-disposition'] = 'filename={}_refund_{}.pdf'.format(settings.INVOICE_FILENAME_PREFIX, invoice.id) r.write(base64.b64decode(refund.refund_pdf)) return r