lingo: use invoice filename in content-disposition (#76874)
gitea/combo/pipeline/head This commit looks good
Details
gitea/combo/pipeline/head This commit looks good
Details
This commit is contained in:
parent
c22d32cb95
commit
9fe8be1fb7
|
@ -817,8 +817,15 @@ class ItemDownloadView(View):
|
|||
return HttpResponseRedirect(self.request.headers.get('Referer'))
|
||||
return HttpResponseRedirect('/')
|
||||
|
||||
filename = '"%s.pdf"' % item_id
|
||||
if data.headers.get('content-disposition'):
|
||||
if len(data.headers['content-disposition'].split('filename=')) == 2:
|
||||
part = data.headers['content-disposition'].split('filename=')[1]
|
||||
if part.endswith('.pdf') or part.endswith('.pdf"'):
|
||||
filename = part
|
||||
|
||||
r = HttpResponse(data, content_type='application/pdf')
|
||||
r['Content-Disposition'] = 'attachment; filename="%s.pdf"' % item_id
|
||||
r['Content-Disposition'] = 'attachment; filename=%s' % filename
|
||||
return r
|
||||
|
||||
|
||||
|
|
|
@ -599,7 +599,11 @@ def test_item_pdf(mock_send, app, remote_regie):
|
|||
encrypt_reference = cell.crypto_reference
|
||||
encrypt_payer = aes_hex_encrypt(settings.SECRET_KEY, force_bytes('42'))
|
||||
|
||||
app.get('/lingo/item/%s/%s/%s/pdf' % (remote_regie.id, encrypt_id, encrypt_reference))
|
||||
mock_response = mock.Mock(status_code=200)
|
||||
mock_response.headers = {}
|
||||
mock_send.return_value = mock_response
|
||||
resp = app.get('/lingo/item/%s/%s/%s/pdf' % (remote_regie.id, encrypt_id, encrypt_reference))
|
||||
assert resp['Content-Disposition'] == 'attachment; filename="F201601.pdf"'
|
||||
url = mock_send.call_args[0][0].url
|
||||
scheme, netloc, path, dummy, querystring, dummy = urllib.parse.urlparse(url)
|
||||
assert scheme == 'http'
|
||||
|
@ -610,10 +614,12 @@ def test_item_pdf(mock_send, app, remote_regie):
|
|||
assert 'payer_external_id' not in query
|
||||
|
||||
mock_send.reset_mock()
|
||||
app.get(
|
||||
mock_response.headers = {'content-disposition': 'filename="foo.pdf"'}
|
||||
resp = app.get(
|
||||
'/lingo/item/%s/%s/%s/pdf?payer_external_id=%s'
|
||||
% (remote_regie.id, encrypt_id, encrypt_reference, encrypt_payer)
|
||||
)
|
||||
assert resp['Content-Disposition'] == 'attachment; filename="foo.pdf"'
|
||||
url = mock_send.call_args[0][0].url
|
||||
scheme, netloc, path, dummy, querystring, dummy = urllib.parse.urlparse(url)
|
||||
assert scheme == 'http'
|
||||
|
|
Loading…
Reference in New Issue