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 2021/07/09 13:52:04 UTC

[airavata-django-portal] 01/02: AIRAVATA-3485 Support for experiment-id in user-storage REST API

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git

commit b727565ad15743866bc2e853b54248a9f66ea7a3
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri Jul 9 09:33:04 2021 -0400

    AIRAVATA-3485 Support for experiment-id in user-storage REST API
---
 django_airavata/apps/api/views.py | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index 05fdbe1..22fc578 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -1520,8 +1520,9 @@ class UserStoragePathView(APIView):
 
     def post(self, request, path="/", format=None):
         path = request.POST.get('path', path)
-        if not user_storage.dir_exists(request, path):
-            _, resource_path = user_storage.create_user_dir(request, path)
+        experiment_id = request.POST.get('experiment-id')
+        if not user_storage.dir_exists(request, path, experiment_id=experiment_id):
+            _, resource_path = user_storage.create_user_dir(request, path, experiment_id=experiment_id)
             # create_user_dir may create the directory with a different name
             # than requested, for example, converting spaces to underscores, so
             # use as the path the path that is returned by create_user_dir
@@ -1532,7 +1533,8 @@ class UserStoragePathView(APIView):
         if 'file' in request.FILES:
             user_file = request.FILES['file']
             data_product = user_storage.save(
-                request, path, user_file, content_type=user_file.content_type)
+                request, path, user_file, content_type=user_file.content_type,
+                experiment_id=experiment_id)
         # Handle a tus upload
         elif 'uploadURL' in request.POST:
             uploadURL = request.POST['uploadURL']
@@ -1540,7 +1542,8 @@ class UserStoragePathView(APIView):
             def save_file(file_path, file_name, file_type):
                 with open(file_path, 'rb') as uploaded_file:
                     return user_storage.save(request, path, uploaded_file,
-                                             name=file_name, content_type=file_type)
+                                             name=file_name, content_type=file_type,
+                                             experiment_id=experiment_id)
             data_product = tus.save_tus_upload(uploadURL, save_file)
         return self._create_response(request, path, uploaded=data_product)
 
@@ -1565,16 +1568,18 @@ class UserStoragePathView(APIView):
 
     def delete(self, request, path="/", format=None):
         path = request.POST.get('path', path)
-        if user_storage.dir_exists(request, path):
-            user_storage.delete_dir(request, path)
+        experiment_id = request.POST.get('experiment-id')
+        if user_storage.dir_exists(request, path, experiment_id=experiment_id):
+            user_storage.delete_dir(request, path, experiment_id=experiment_id)
         else:
-            user_storage.delete_user_file(request, path)
+            user_storage.delete_user_file(request, path, experiment_id=experiment_id)
 
         return Response(status=204)
 
     def _create_response(self, request, path, uploaded=None):
-        if user_storage.dir_exists(request, path):
-            directories, files = user_storage.listdir(request, path)
+        experiment_id = request.POST.get('experiment-id')
+        if user_storage.dir_exists(request, path, experiment_id=experiment_id):
+            directories, files = user_storage.listdir(request, path, experiment_id=experiment_id)
             data = {
                 'isDir': True,
                 'directories': directories,