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/29 19:44:45 UTC

[airavata-django-portal] 01/02: AIRAVATA-3018 Only show edit button when project is writeable

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 9d85444118e41133859dfab863181b536e70db0b
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Wed May 29 15:43:42 2019 -0400

    AIRAVATA-3018 Only show edit button when project is writeable
---
 django_airavata/apps/api/serializers.py                            | 7 +++++++
 .../apps/api/static/django_airavata_api/js/models/Project.js       | 3 ++-
 .../js/components/project/ProjectListItem.vue                      | 2 +-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index b36524e..26ebf7e 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -247,6 +247,7 @@ class ProjectSerializer(
         lookup_field='projectID',
         lookup_url_kwarg='project_id')
     creationTime = UTCPosixTimestampDateTimeField(allow_null=True)
+    userHasWriteAccess = serializers.SerializerMethodField()
 
     def create(self, validated_data):
         return Project(**validated_data)
@@ -257,6 +258,12 @@ class ProjectSerializer(
             'description', instance.description)
         return instance
 
+    def get_userHasWriteAccess(self, project):
+        request = self.context['request']
+        return request.airavata_client.userHasAccess(
+            request.authz_token, project.projectID,
+            ResourcePermissionType.WRITE)
+
 
 class ApplicationModuleSerializer(
         thrift_utils.create_serializer_class(ApplicationModule)):
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js b/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js
index 59bc6be..55ad97f 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/models/Project.js
@@ -10,6 +10,7 @@ const FIELDS = [
         name: 'creationTime',
         type: 'date'
     },
+    'userHasWriteAccess'
 ];
 
 export default class Project extends BaseModel {
@@ -25,4 +26,4 @@ export default class Project extends BaseModel {
         }
         return null;
     }
-}
\ No newline at end of file
+}
diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/project/ProjectListItem.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/project/ProjectListItem.vue
index 2434240..8b690c1 100644
--- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/project/ProjectListItem.vue
+++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/project/ProjectListItem.vue
@@ -3,7 +3,7 @@
     <td>{{ project.name }}</td>
     <td>{{ project.owner }}</td>
     <td v-bind:title="project.creationTime">{{ creationTime }}</td>
-    <td><a :href="editLink">Edit <i
+    <td><a :href="editLink" v-if="project.userHasWriteAccess">Edit <i
           class="fa fa-edit"
           aria-hidden="true"
         ></i></a></td>