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 18:48:45 UTC
[airavata-django-portal] 02/04: AIRAVATA-2631 Add downloadURL to
DataProductSerializer
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
commit aeeb13976a5b2e22f2224cae67115075f8ee6b26
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Feb 15 11:46:42 2018 -0500
AIRAVATA-2631 Add downloadURL to DataProductSerializer
---
django_airavata/apps/api/serializers.py | 10 ++++++++++
.../api/static/django_airavata_api/js/models/DataProduct.js | 1 +
.../js/components/experiment/ExperimentSummary.vue | 7 ++++---
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 7c3ab02..5a418c8 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -5,6 +5,7 @@ import logging
from urllib.parse import quote
from django.conf import settings
+from django.urls import reverse
from rest_framework import serializers
from airavata.model.appcatalog.appdeployment.ttypes import (ApplicationDeploymentDescription,
@@ -25,6 +26,7 @@ from airavata.model.job.ttypes import JobModel
from airavata.model.status.ttypes import ExperimentStatus
from airavata.model.workspace.ttypes import Project
+from . import datastore
from . import thrift_utils
log = logging.getLogger(__name__)
@@ -305,6 +307,14 @@ class DataProductSerializer(
creationTime = UTCPosixTimestampDateTimeField()
lastModifiedTime = UTCPosixTimestampDateTimeField()
replicaLocations = DataReplicaLocationSerializer(many=True)
+ downloadURL = serializers.SerializerMethodField()
+
+ def get_downloadURL(self, data_product):
+ """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 None
# TODO move this into airavata_sdk?
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/DataProduct.js b/django_airavata/apps/api/static/django_airavata_api/js/models/DataProduct.js
index dff0251..1f95ce3 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/models/DataProduct.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/models/DataProduct.js
@@ -27,6 +27,7 @@ const FIELDS = [
type: DataReplicaLocation,
list: true
},
+ 'downloadURL',
];
const FILENAME_REGEX = /[^/]+$/;
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue
index 337e53b..c424d7c 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/experiment/ExperimentSummary.vue
@@ -29,7 +29,8 @@
<th scope="row">Outputs</th>
<td>
<template v-for="output in localFullExperiment.outputDataProducts">
- <a :href="'/api/download/' + encodeURIComponent(output.productUri)">{{ output.filename }}</a>
+ <span v-if="output.downloadURL"><a :href="output.downloadURL">{{ output.filename }}</a></span>
+ <span v-else>{{ output.filename }}</span>
</template>
</td>
</tr>
@@ -111,11 +112,11 @@
<td>{{ experiment.userConfigurationData.computationalResourceScheduling.queueName }}</td>
</tr>
<tr>
- <!-- TODO -->
<th scope="row">Inputs</th>
<td>
<template v-for="input in localFullExperiment.inputDataProducts">
- <a :href="'/api/download/' + encodeURIComponent(input.productUri)">{{ input.filename }}</a>
+ <span v-if="input.downloadURL"><a :href="input.downloadURL">{{ input.filename }}</a></span>
+ <span v-else>{{ input.filename }}</span>
</template>
</td>
</tr>
--
To stop receiving notification emails like this one, please contact
machristie@apache.org.