mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-17 14:37:58 +00:00
Merge pull request #1176 from haiwen/fix-group-transfer
Fix group transfer
This commit is contained in:
commit
45a634b3be
@ -3346,6 +3346,10 @@ img.thumbnail {
|
|||||||
#group-discussions .popover-con {
|
#group-discussions .popover-con {
|
||||||
padding:0 0;
|
padding:0 0;
|
||||||
}
|
}
|
||||||
|
.group-admin-txt {
|
||||||
|
font-size:12px;
|
||||||
|
color:#888;
|
||||||
|
}
|
||||||
/****** grid view *****/
|
/****** grid view *****/
|
||||||
/* view mode */
|
/* view mode */
|
||||||
.switch-mode {
|
.switch-mode {
|
||||||
|
@ -10,7 +10,7 @@ from rest_framework.views import APIView
|
|||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
import seaserv
|
import seaserv
|
||||||
from seaserv import seafile_api
|
from seaserv import seafile_api, ccnet_api
|
||||||
from pysearpc import SearpcError
|
from pysearpc import SearpcError
|
||||||
|
|
||||||
from seahub.api2.utils import api_error
|
from seahub.api2.utils import api_error
|
||||||
@ -256,12 +256,13 @@ class Group(APIView):
|
|||||||
|
|
||||||
# transfer a group
|
# transfer a group
|
||||||
if not is_group_member(group_id, new_owner):
|
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):
|
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:
|
except SearpcError as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
|
@ -986,7 +986,13 @@
|
|||||||
<script type="text/template" id="group-member-tmpl">
|
<script type="text/template" id="group-member-tmpl">
|
||||||
<img src="<%= avatar_url %>" alt="" width="32" class="avatar-circle fleft" />
|
<img src="<%= avatar_url %>" alt="" width="32" class="avatar-circle fleft" />
|
||||||
<div class="txt">
|
<div class="txt">
|
||||||
<p class="txt-item ellipsis" title="<%- name %>"><%- name %></p>
|
<p class="txt-item ellipsis" title="<%- name %>"><%- name %>
|
||||||
|
<% if (is_owner) { %>
|
||||||
|
<span class="group-admin-txt">{% trans "owner" %}</span>
|
||||||
|
<% } else if (is_admin) { %>
|
||||||
|
<span class="group-admin-txt">{% trans "admin" %}</span>
|
||||||
|
<% } %>
|
||||||
|
</p>
|
||||||
<p class="txt-item ellipsis" title="<%- contact_email %>"><%- contact_email %></p>
|
<p class="txt-item ellipsis" title="<%- contact_email %>"><%- contact_email %></p>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
@ -18,11 +18,16 @@ define([
|
|||||||
'click': 'visitMemberProfile'
|
'click': 'visitMemberProfile'
|
||||||
},
|
},
|
||||||
|
|
||||||
initialize: function() {
|
initialize: function(options) {
|
||||||
|
this.is_owner = options.is_owner;
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
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;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -29,7 +29,13 @@ define([
|
|||||||
},
|
},
|
||||||
|
|
||||||
addOne: function(item, collection, options) {
|
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({
|
var view = new ItemView({
|
||||||
|
is_owner: is_owner,
|
||||||
model: item
|
model: item
|
||||||
});
|
});
|
||||||
this.$listContainer.append(view.render().el);
|
this.$listContainer.append(view.render().el);
|
||||||
|
@ -160,7 +160,7 @@ define([
|
|||||||
if (!email) {
|
if (!email) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (email == _this.group.owner) {
|
if (email == _this.groupView.group.owner) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,6 +179,7 @@ define([
|
|||||||
},
|
},
|
||||||
success: function() {
|
success: function() {
|
||||||
// after the transfer, the former owner becomes a common admin of the group.
|
// 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();
|
$.modal.close();
|
||||||
},
|
},
|
||||||
error: function(xhr) {
|
error: function(xhr) {
|
||||||
|
@ -124,7 +124,10 @@ class GroupsTest(BaseTestCase):
|
|||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
|
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
|
|
||||||
assert json_resp['owner'] == new_creator
|
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):
|
def test_can_not_transfer_group_to_group_owner(self):
|
||||||
new_creator = self.user.email
|
new_creator = self.user.email
|
||||||
|
Loading…
Reference in New Issue
Block a user