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 2019/05/24 18:28:43 UTC

[airavata-django-portal] 07/08: AIRAVATA-3034 Upload files, add new directory

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

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

commit d04ded4f156f80e4aab125ef6917d0b5ed9dd9e5
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri May 24 12:20:00 2019 -0400

    AIRAVATA-3034 Upload files, add new directory
---
 django_airavata/apps/api/views.py                  |  1 +
 django_airavata/apps/workspace/package.json        |  4 +-
 .../js/containers/UserStorageContainer.vue         | 87 +++++++++++++++++++---
 django_airavata/static/common/package.json         |  2 +-
 4 files changed, 79 insertions(+), 15 deletions(-)

diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index 94eed4f..c93df77 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -1356,6 +1356,7 @@ class UserStoragePathView(APIView):
         if not data_products_helper.dir_exists(request, user_storage_path):
             data_products_helper.create_user_dir(request, user_storage_path)
 
+        data_product = None
         if 'file' in request.FILES:
             user_file = request.FILES['file']
             data_product = data_products_helper.save(
diff --git a/django_airavata/apps/workspace/package.json b/django_airavata/apps/workspace/package.json
index 833f1dc..2e3fd10 100644
--- a/django_airavata/apps/workspace/package.json
+++ b/django_airavata/apps/workspace/package.json
@@ -14,8 +14,8 @@
     "test:unit:watch": "vue-cli-service test:unit --watch"
   },
   "dependencies": {
-    "bootstrap": "^4.0.0-beta.2",
-    "bootstrap-vue": "^2.0.0-rc.11",
+    "bootstrap": "^4.3.1",
+    "bootstrap-vue": "^2.0.0-rc.20",
     "django-airavata-api": "file:../api",
     "django-airavata-common-ui": "file:../../static/common",
     "django-airavata-workspace-plugin-api": "file:django-airavata-workspace-plugin-api",
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue
index b198dd2..0674abd 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/containers/UserStorageContainer.vue
@@ -1,15 +1,47 @@
 <template>
-  <div class="row">
-    <div class="col">
-      <h1 class="h4">
-        Storage
-      </h1>
-      <p>
-        <small class="text-muted"><i class="fa fa-folder-open"></i> {{ username }}</small>
-      </p>
-      <b-card>
-        <router-view :user-storage-path="userStoragePath"></router-view>
-      </b-card>
+  <div>
+    <div class="row">
+      <div class="col">
+        <h1 class="h4">
+          Storage
+        </h1>
+        <p>
+          <small class="text-muted"><i class="fa fa-folder-open"></i> {{ username }}</small>
+        </p>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col">
+        <b-form-file
+          v-model="file"
+          ref="file-input"
+          placeholder="Add file"
+          @input="fileChanged"
+          class="mb-2"
+        ></b-form-file>
+      </div>
+      <div class="col">
+        <b-input-group>
+          <b-form-input
+            v-model="dirName"
+            placeholder="New directory name"
+            @keydown.native.enter="addDirectory"
+          ></b-form-input>
+          <b-input-group-append>
+            <b-button
+              @click="addDirectory"
+              :disabled="!this.dirName"
+            >Add directory</b-button>
+          </b-input-group-append>
+        </b-input-group>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col">
+        <b-card>
+          <router-view :user-storage-path="userStoragePath"></router-view>
+        </b-card>
+      </div>
     </div>
   </div>
 </template>
@@ -34,7 +66,9 @@ export default {
   },
   data() {
     return {
-      userStoragePath: null
+      userStoragePath: null,
+      file: null,
+      dirName: null
     };
   },
   methods: {
@@ -64,6 +98,35 @@ export default {
           duration: 2
         })
       );
+    },
+    fileChanged() {
+      if (this.file) {
+        let data = new FormData();
+        data.append("file", this.file);
+        utils.FetchUtils.post(
+          "/api/user-storage/" + this.storagePath,
+          data
+        ).then(result => {
+          // this.file = null;
+          this.$refs["file-input"].reset();
+          this.loadUserStoragePath(this.storagePath);
+        });
+      }
+    },
+    addDirectory() {
+      if (this.dirName) {
+        let newDirPath = this.storagePath;
+        if (!newDirPath.endsWith("/")) {
+          newDirPath = newDirPath + "/";
+        }
+        newDirPath = newDirPath + this.dirName;
+        utils.FetchUtils.post("/api/user-storage/" + newDirPath).then(
+          result => {
+            this.dirName = null;
+            this.loadUserStoragePath(this.storagePath);
+          }
+        );
+      }
     }
   },
   created() {
diff --git a/django_airavata/static/common/package.json b/django_airavata/static/common/package.json
index eff789e..c1c7da6 100644
--- a/django_airavata/static/common/package.json
+++ b/django_airavata/static/common/package.json
@@ -14,7 +14,7 @@
   },
   "dependencies": {
     "@fortawesome/fontawesome-free": "^5.6.3",
-    "bootstrap": "^4.2.1",
+    "bootstrap": "^4.3.1",
     "bootstrap-vue": "^2.0.0-rc.11",
     "clipboard": "^2.0.4",
     "django-airavata-api": "file:../../apps/api",