You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2018/02/15 21:35:10 UTC
[airavata-django-portal] branch master updated: AIRAVATA-2631
Change download URL from query param to path param
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git
The following commit(s) were added to refs/heads/master by this push:
new 73c00a8 AIRAVATA-2631 Change download URL from query param to path param
73c00a8 is described below
commit 73c00a8e3effc9dbaf70e8aec55576d936bb98db
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Feb 15 16:34:59 2018 -0500
AIRAVATA-2631 Change download URL from query param to path param
---
django_airavata/apps/api/serializers.py | 7 +++++--
django_airavata/apps/api/urls.py | 2 +-
django_airavata/apps/api/views.py | 15 ++++++++++-----
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 5a418c8..a5f843f 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -2,7 +2,7 @@
import copy
import datetime
import logging
-from urllib.parse import quote
+from urllib.parse import quote, urlencode
from django.conf import settings
from django.urls import reverse
@@ -313,7 +313,10 @@ class DataProductSerializer(
"""Getter for downloadURL field."""
if datastore.exists(data_product):
request = self.context['request']
- return request.build_absolute_uri(reverse('django_airavata_api:download_file', args=[data_product.productUri]))
+ return (request.build_absolute_uri(
+ reverse('django_airavata_api:download_file'))
+ + '?'
+ + urlencode({'data-product-uri': data_product.productUri}))
return None
diff --git a/django_airavata/apps/api/urls.py b/django_airavata/apps/api/urls.py
index a9a715a..bc63c5a 100644
--- a/django_airavata/apps/api/urls.py
+++ b/django_airavata/apps/api/urls.py
@@ -35,7 +35,7 @@ urlpatterns = [
url(r'^credentials/ssh/key/delete', views.DeleteSSHPubKey.as_view(), name="ssh_key_deletion"),
url(r'^credentials/ssh/key/create', views.GenerateRegisterSSHKeys.as_view(), name="ssh_key_creation"),
url(r'^upload$', views.upload_input_file, name='upload_input_file'),
- url(r'^download/(?P<data_product_uri>.+)$', views.download_file, name='download_file'),
+ url(r'^download', views.download_file, name='download_file'),
]
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index 1307012..45a2eb1 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -647,12 +647,17 @@ def upload_input_file(request):
@login_required
-def download_file(request, data_product_uri):
+def download_file(request):
# TODO check that user has access to this file using sharing API
- data_product = request.airavata_client.getDataProduct(
- request.authz_token, data_product_uri)
- if not data_product:
- raise Http404("data product does not exist")
+ data_product_uri = request.GET.get('data-product-uri', '')
+ data_product = None
+ try:
+ data_product = request.airavata_client.getDataProduct(
+ request.authz_token, data_product_uri)
+ except Exception as e:
+ log.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 = datastore.open(data_product)
response = FileResponse(data_file,
--
To stop receiving notification emails like this one, please contact
machristie@apache.org.