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/23 06:39:41 UTC
[airavata-django-portal] 02/04: AIRAVATA-2688 Adding/removing users
in group edit
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 3ea3901d9e2858506d2b8a911c03b3ebde18ee49
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Feb 23 01:26:31 2018 -0500
AIRAVATA-2688 Adding/removing users in group edit
---
django_airavata/apps/api/serializers.py | 8 +++++
django_airavata/apps/api/views.py | 9 +++++-
.../js/groups_components/GroupCreateContainer.vue | 3 ++
.../js/groups_components/GroupEditContainer.vue | 5 +++-
.../js/groups_components/GroupEditor.vue | 34 +++++++++-------------
5 files changed, 36 insertions(+), 23 deletions(-)
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index da2a10b..cf1e4a5 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -129,6 +129,14 @@ class GroupSerializer(serializers.Serializer):
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.description = validated_data.get('description', instance.description)
+ # Calculate added and removed members
+ old_members = set(instance.members)
+ new_members = set(validated_data.get('members', instance.members))
+ removed_members = old_members - new_members
+ added_members = new_members - old_members
+ instance._removed_members = list(removed_members)
+ instance._added_members = list(added_members)
+ instance.members = validated_data.get('members', instance.members)
return instance
def get_isAdmin(self, group):
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index d0ce7ef..ffe207f 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -218,7 +218,14 @@ class GroupViewSet(APIBackedViewSet):
def perform_update(self, serializer):
group = serializer.save()
- self.request.profile_service['group_manager'].updateGroup(self.authz_token, group)
+ group_manager_client = self.request.profile_service['group_manager']
+ if len(group._added_members) > 0:
+ group_manager_client.addUsersToGroup(
+ self.authz_token, group._added_members, group.id)
+ if len(group._removed_members) > 0:
+ group_manager_client.removeUsersFromGroup(
+ self.authz_token, group._removed_members, group.id)
+ group_manager_client.updateGroup(self.authz_token, group)
class ProjectViewSet(APIBackedViewSet):
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue
index 81b1dd9..7900407 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupCreateContainer.vue
@@ -22,6 +22,9 @@ export default {
GroupEditor,
},
methods: {
+ handleSaved: function(group) {
+ window.location.assign("/groups/");
+ }
},
computed: {
},
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue
index 19907d9..66fc885 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditContainer.vue
@@ -1,5 +1,5 @@
<template>
- <group-editor v-if="group" :group="group"></group-editor>
+ <group-editor v-if="group" :group="group" @saved="handleSaved"></group-editor>
</template>
<script>
@@ -26,6 +26,9 @@ export default {
GroupEditor,
},
methods: {
+ handleSaved: function(group) {
+ window.location.assign("/groups/");
+ }
},
computed: {
},
diff --git a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue
index ddba0dc..2749ed4 100644
--- a/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue
+++ b/django_airavata/apps/groups/static/django_airavata_groups/js/groups_components/GroupEditor.vue
@@ -4,7 +4,7 @@
{{ showDismissibleAlert.message }}
</b-alert>
- <b-form v-if="show">
+ <b-form>
<b-form-group id="group1" label="Group Name:" label-for="group_name" description="Name should only contain Alpha Characters">
<b-form-input id="group_name" type="text" v-model="localGroup.name" required placeholder="Enter group name">
@@ -40,10 +40,7 @@ export default {
},
data () {
return {
- selection: '',
localGroup: this.group.clone(),
- show: true,
- selected: [],
showDismissibleAlert: {'variant':'success', 'message':'no data', 'dismissable':false},
userProfiles: [],
}
@@ -53,23 +50,18 @@ export default {
},
methods: {
submitForm () {
- var temp = [];
- for(var i=0;i<this.selected.length;i++) {
- temp.push(this.selected[i].id);
- }
- this.localGroup.members = temp;
- services.GroupService.create(this.localGroup)
- .then(group => {
- this.$emit('saved', result);
- })
- .catch(error => {
- this.showDismissibleAlert.dismissable = true;
- this.showDismissibleAlert.message = "Error: "+error.data;
- this.showDismissibleAlert.variant = "danger";
- });
- },
- updateSelectedValue(data) {
- this.selected = data;
+ let saveOperation = (this.localGroup.id)
+ ? services.GroupService.update(this.localGroup)
+ : services.GroupService.create(this.localGroup);
+ saveOperation
+ .then(group => {
+ this.$emit('saved', group);
+ })
+ .catch(error => {
+ this.showDismissibleAlert.dismissable = true;
+ this.showDismissibleAlert.message = "Error: "+error.data;
+ this.showDismissibleAlert.variant = "danger";
+ });
},
},
computed: {
--
To stop receiving notification emails like this one, please contact
machristie@apache.org.