Storage/S3: Move content disposition util to plugin

It was in the indico core because flask did not expose it and we needed
it there, but that's no longer the case (still not exposed though) so we
include it here now.
This commit is contained in:
Adrian Moennich 2021-05-08 12:24:23 +02:00
parent 4afb7bbac3
commit 8d655a8dce
2 changed files with 25 additions and 1 deletions

View File

@ -26,7 +26,9 @@ from indico.core.config import config
from indico.core.storage import Storage, StorageError
from indico.core.storage.backend import ReadOnlyStorageMixin, StorageReadOnlyError
from indico.util.fs import get_file_checksum
from indico.web.flask.util import make_content_disposition_args, send_file
from indico.web.flask.util import send_file
from indico_storage_s3.util import make_content_disposition_args
s3_session_cache = threading.local()

View File

@ -0,0 +1,22 @@
# This file is part of the Indico plugins.
# Copyright (C) 2002 - 2021 CERN
#
# The Indico plugins are free software; you can redistribute
# them and/or modify them under the terms of the MIT License;
# see the LICENSE file for more details.
import unicodedata
from werkzeug.urls import url_quote
def make_content_disposition_args(attachment_filename):
try:
attachment_filename = attachment_filename.encode('ascii')
except UnicodeEncodeError:
return {
'filename': unicodedata.normalize('NFKD', attachment_filename).encode('ascii', 'ignore'),
'filename*': "UTF-8''%s" % url_quote(attachment_filename, safe=b''),
}
else:
return {'filename': attachment_filename}