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 d90a602  AIRAVATA-3073 Include admin groups in count, initial list
d90a602 is described below

commit d90a60203adf0429150f024cb4c733bce9690e6e
Author: Marcus Christie <[email protected]>
AuthorDate: Wed Jul 10 09:20:38 2019 -0400

    AIRAVATA-3073 Include admin groups in count, initial list
---
 .../dashboards/CredentialStoreDashboard.vue        |  4 +--
 .../django_airavata_api/js/models/SharedEntity.js  |  4 +--
 .../static/common/js/components/ShareButton.vue    | 36 ++++++++++++++--------
 .../common/js/components/SharedEntityEditor.vue    |  2 +-
 4 files changed, 28 insertions(+), 18 deletions(-)

diff --git 
a/django_airavata/apps/admin/static/django_airavata_admin/src/components/dashboards/CredentialStoreDashboard.vue
 
b/django_airavata/apps/admin/static/django_airavata_admin/src/components/dashboards/CredentialStoreDashboard.vue
index 4b6bebe..78aa5e7 100644
--- 
a/django_airavata/apps/admin/static/django_airavata_admin/src/components/dashboards/CredentialStoreDashboard.vue
+++ 
b/django_airavata/apps/admin/static/django_airavata_admin/src/components/dashboards/CredentialStoreDashboard.vue
@@ -5,7 +5,7 @@
 
         <b-table striped hover :fields="fields" :items="slotProps.items">
           <template slot="sharing" slot-scope="data">
-            <share-button :entity-id="data.item.token" 
:disallow-editing-admin-groups="false" />
+            <share-button :entity-id="data.item.token" 
:disallow-editing-admin-groups="false" :auto-add-admin-groups="false"/>
           </template>
           <template slot="persistedTime" slot-scope="data">
             <human-date :date="data.value"/>
@@ -27,7 +27,7 @@
 
         <b-table striped hover :fields="fields" :items="slotProps.items">
           <template slot="sharing" slot-scope="data">
-            <share-button :entity-id="data.item.token" 
:disallow-editing-admin-groups="false"/>
+            <share-button :entity-id="data.item.token" 
:disallow-editing-admin-groups="false" :auto-add-admin-groups="false"/>
           </template>
           <template slot="action" slot-scope="data">
             <delete-link v-if="data.item.userHasWriteAccess" 
@delete="deletePasswordCredential(data.item)">
diff --git 
a/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js 
b/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js
index 396e476..f7e1d57 100644
--- 
a/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js
+++ 
b/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js
@@ -56,7 +56,7 @@ export default class SharedEntity extends BaseModel {
     );
   }
 
-  addGroup(group) {
+  addGroup({group, permissionType = ResourcePermissionType.READ}) {
     if (!this.groupPermissions) {
       this.groupPermissions = [];
     }
@@ -64,7 +64,7 @@ export default class SharedEntity extends BaseModel {
       this.groupPermissions.push(
         new GroupPermission({
           group: group,
-          permissionType: ResourcePermissionType.READ
+          permissionType: permissionType
         })
       );
     }
diff --git a/django_airavata/static/common/js/components/ShareButton.vue 
b/django_airavata/static/common/js/components/ShareButton.vue
index 3f9fe42..e9bef78 100644
--- a/django_airavata/static/common/js/components/ShareButton.vue
+++ b/django_airavata/static/common/js/components/ShareButton.vue
@@ -65,6 +65,10 @@ export default {
       type: Boolean,
       default: true
     },
+    autoAddAdminGroups: {
+      type: Boolean,
+      default: true
+    },
     disallowEditingAdminGroups: {
       type: Boolean,
       default: true
@@ -79,6 +83,8 @@ export default {
       parentSharedEntity: null,
       sharedEntityCopy: null,
       defaultGatewayUsersGroup: null,
+      adminsGroup: null,
+      readOnlyAdminsGroup: null,
       users: null,
       groups: null
     };
@@ -121,9 +127,7 @@ export default {
     },
     filteredGroupPermissions: function() {
       if (this.localSharedEntity && this.localSharedEntity.groupPermissions) {
-        return this.disallowEditingAdminGroups
-          ? this.localSharedEntity.nonAdminGroupPermissions
-          : this.localSharedEntity.groupPermissions;
+        return this.localSharedEntity.groupPermissions;
       } else {
         return [];
       }
@@ -131,10 +135,7 @@ export default {
     combinedGroups() {
       const groups = [];
       groups.push(...this.filteredGroupPermissions.map(gp => gp.group));
-      if (
-        this.parentSharedEntity &&
-        this.parentSharedEntity.groupPermissions
-      ) {
+      if (this.parentSharedEntity && this.parentSharedEntity.groupPermissions) 
{
         groups.push(
           ...this.parentSharedEntity.groupPermissions.map(gp => gp.group)
         );
@@ -191,15 +192,14 @@ export default {
       if (
         !this.entityId &&
         (!this.sharedEntity || !this.sharedEntity.entityId) &&
-        !this.defaultGatewayUsersGroup
+        (!this.defaultGatewayUsersGroup || !this.adminsGroup || 
!this.readOnlyAdminsGroup)
       ) {
         promises.push(
           services.GroupService.list({ limit: -1 }).then(groups => {
             this.groups = groups;
-            // If a new sharedEntity, automatically add the 
defaultGatewayUsersGroup
-            groups
-              .filter(group => group.isDefaultGatewayUsersGroup)
-              .forEach(group => (this.defaultGatewayUsersGroup = group));
+            this.defaultGatewayUsersGroup = groups.find(g => 
g.isDefaultGatewayUsersGroup);
+            this.adminsGroup = groups.find(g => g.isGatewayAdminsGroup);
+            this.readOnlyAdminsGroup = groups.find(g => 
g.isReadOnlyGatewayAdminsGroup);
           })
         );
       }
@@ -222,7 +222,17 @@ export default {
           !this.localSharedEntity.entityId &&
           this.autoAddDefaultGatewayUsersGroup
         ) {
-          this.localSharedEntity.addGroup(this.defaultGatewayUsersGroup);
+          this.localSharedEntity.addGroup({
+            group: this.defaultGatewayUsersGroup
+          });
+          this.emitUnsavedEvent();
+        }
+        if (!this.localSharedEntity.entityId && this.autoAddAdminGroups) {
+          this.localSharedEntity.addGroup({
+            group: this.adminsGroup,
+            permissionType: models.ResourcePermissionType.WRITE
+          });
+          this.localSharedEntity.addGroup({ group: this.readOnlyAdminsGroup });
           this.emitUnsavedEvent();
         }
       });
diff --git a/django_airavata/static/common/js/components/SharedEntityEditor.vue 
b/django_airavata/static/common/js/components/SharedEntityEditor.vue
index 609d01d..ab7f06b 100644
--- a/django_airavata/static/common/js/components/SharedEntityEditor.vue
+++ b/django_airavata/static/common/js/components/SharedEntityEditor.vue
@@ -291,7 +291,7 @@ export default {
     suggestionSelected: function(suggestion) {
       if (suggestion.type === "group") {
         const group = this.groups.find(group => group.id === suggestion.id);
-        this.data.addGroup(group);
+        this.data.addGroup({ group });
       } else if (suggestion.type === "user") {
         const user = this.users.find(
           user => user.airavataInternalUserId === suggestion.id

Reply via email to