in airavata_django_portal_sdk/views.py [0:0]
def download_file(request):
data_product_uri = request.GET.get('data-product-uri', '')
force_download = 'download' in request.GET
data_product = None
try:
data_product = request.airavata_client.getDataProduct(
request.authz_token, data_product_uri)
mime_type = "application/octet-stream" # default mime-type
if (data_product.productMetadata and
'mime-type' in data_product.productMetadata):
mime_type = data_product.productMetadata['mime-type']
# 'mime-type' url parameter overrides
mime_type = request.GET.get('mime-type', mime_type)
except Exception as e:
logger.warning("Failed to load DataProduct for {}"
.format(data_product_uri), exc_info=True)
raise Http404("data product does not exist") from e
try:
data_file = user_storage.open_file(request, data_product)
as_attachment = (mime_type == 'application/octet-stream' or force_download)
if user_storage.is_input_file(request, data_product):
file_name = data_product.productName
else:
file_name = os.path.basename(data_file.name)
return FileResponse(data_file, content_type=mime_type, as_attachment=as_attachment, filename=file_name)
except ObjectDoesNotExist as e:
raise Http404(str(e)) from e