From 804695bbe209b8bf80ab533439b0a8edafe76119 Mon Sep 17 00:00:00 2001 From: Daniel Pan Date: Fri, 6 May 2016 14:48:48 +0800 Subject: [PATCH 1/2] Fix group transfer --- media/css/seahub.css | 4 ++++ seahub/templates/js/templates.html | 8 +++++++- static/scripts/app/views/group-member.js | 9 +++++++-- static/scripts/app/views/group-members.js | 6 ++++++ static/scripts/app/views/group-settings.js | 3 ++- 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/media/css/seahub.css b/media/css/seahub.css index 7e0b416ce6..d809e2bf0c 100644 --- a/media/css/seahub.css +++ b/media/css/seahub.css @@ -3346,6 +3346,10 @@ img.thumbnail { #group-discussions .popover-con { padding:0 0; } +.group-admin-txt { + font-size:12px; + color:#888; +} /****** grid view *****/ /* view mode */ .switch-mode { diff --git a/seahub/templates/js/templates.html b/seahub/templates/js/templates.html index 6c31fa2d3d..82ac914689 100644 --- a/seahub/templates/js/templates.html +++ b/seahub/templates/js/templates.html @@ -986,7 +986,13 @@ diff --git a/static/scripts/app/views/group-member.js b/static/scripts/app/views/group-member.js index 6d6eeeb043..9539640de1 100644 --- a/static/scripts/app/views/group-member.js +++ b/static/scripts/app/views/group-member.js @@ -18,11 +18,16 @@ define([ 'click': 'visitMemberProfile' }, - initialize: function() { + initialize: function(options) { + this.is_owner = options.is_owner; }, render: function() { - this.$el.html(this.template(this.model.attributes)); + var obj = { + is_owner: this.is_owner, + }; + $.extend(obj, this.model.attributes); + this.$el.html(this.template(obj)); return this; }, diff --git a/static/scripts/app/views/group-members.js b/static/scripts/app/views/group-members.js index a31c4862ea..6460b6d4f6 100644 --- a/static/scripts/app/views/group-members.js +++ b/static/scripts/app/views/group-members.js @@ -29,7 +29,13 @@ define([ }, addOne: function(item, collection, options) { + var is_owner = false; + if (item.get('email') === this.groupView.group.owner) { + is_owner = true; + } + console.log(this.groupView.group.owner + " " + is_owner); var view = new ItemView({ + is_owner: is_owner, model: item }); this.$listContainer.append(view.render().el); diff --git a/static/scripts/app/views/group-settings.js b/static/scripts/app/views/group-settings.js index a56f1a03be..fda20f7f2b 100644 --- a/static/scripts/app/views/group-settings.js +++ b/static/scripts/app/views/group-settings.js @@ -160,7 +160,7 @@ define([ if (!email) { return false; } - if (email == _this.group.owner) { + if (email == _this.groupView.group.owner) { return false; } @@ -179,6 +179,7 @@ define([ }, success: function() { // after the transfer, the former owner becomes a common admin of the group. + Common.feedback(gettext("Successfully transferred the group. You are now a normal member of the group."), 'success'); $.modal.close(); }, error: function(xhr) { From e71ca6d84bd138da604bbdc159854334f273c477 Mon Sep 17 00:00:00 2001 From: lian Date: Fri, 6 May 2016 14:52:28 +0800 Subject: [PATCH 2/2] unset admin after transfer success --- seahub/api2/endpoints/groups.py | 9 +++++---- tests/api/endpoints/test_groups.py | 3 +++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/seahub/api2/endpoints/groups.py b/seahub/api2/endpoints/groups.py index 8490dd904b..6e670a0fbf 100644 --- a/seahub/api2/endpoints/groups.py +++ b/seahub/api2/endpoints/groups.py @@ -10,7 +10,7 @@ from rest_framework.views import APIView from rest_framework import status import seaserv -from seaserv import seafile_api +from seaserv import seafile_api, ccnet_api from pysearpc import SearpcError from seahub.api2.utils import api_error @@ -256,12 +256,13 @@ class Group(APIView): # transfer a group if not is_group_member(group_id, new_owner): - seaserv.ccnet_threaded_rpc.group_add_member(group_id, username, new_owner) + ccnet_api.group_add_member(group_id, username, new_owner) if not is_group_admin(group_id, new_owner): - seaserv.ccnet_threaded_rpc.group_set_admin(group_id, new_owner) + ccnet_api.group_set_admin(group_id, new_owner) - seaserv.ccnet_threaded_rpc.set_group_creator(group_id, new_owner) + ccnet_api.set_group_creator(group_id, new_owner) + ccnet_api.group_unset_admin(group_id, username) except SearpcError as e: logger.error(e) diff --git a/tests/api/endpoints/test_groups.py b/tests/api/endpoints/test_groups.py index 2181e425d9..a35c2edde6 100644 --- a/tests/api/endpoints/test_groups.py +++ b/tests/api/endpoints/test_groups.py @@ -124,7 +124,10 @@ class GroupsTest(BaseTestCase): self.assertEqual(200, resp.status_code) json_resp = json.loads(resp.content) + assert json_resp['owner'] == new_creator + assert new_creator in json_resp['admins'] + assert self.user.email not in json_resp['admins'] def test_can_not_transfer_group_to_group_owner(self): new_creator = self.user.email